📅  最后修改于: 2023-12-03 15:39:26.575000             🧑  作者: Mango
在 C++ 的 iostream 库中,有一个用于表示输入输出状态的 ios 基类,包含了许多操作函数。其中一个函数是 !() 运算符,它被重载来逆转输入输出流的状态标识。该函数通常被用于测试状态标识,以确定输入输出流是否处于错误状态,并且可以用于释放和捕获输入和输出流中的数据。
下面是 !() 函数的示例代码:
#include <iostream>
using namespace std;
int main() {
int num1, num2;
cout << "请输入两个整数:";
cin >> num1 >> num2;
if (!cin) {
cout << "输入错误!" << endl;
cin.clear();
cin.ignore(1000, '\n');
} else {
cout << "num1 + num2 = " << num1 + num2 << endl;
}
return 0;
}
上面的代码中,我们使用了 !() 函数来测试输入流的状态。如果输入流中没有读取到整数,!cin 的结果将为真,我们就可以手动清除流的状态并忽略输入流中的余留数据。否则,我们将使用 num1 和 num2 计算它们的总和。
另外,!() 运算符也可以与文件流一起使用,以便测试文件的状态。下面是一个文件读取和写入的示例代码:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream outputFile("output.txt");
ifstream inputFile("input.txt");
if (!outputFile) {
cout << "无法打开输出文件!" << endl;
return 1;
}
if (!inputFile) {
cout << "无法打开输入文件!" << endl;
return 1;
}
int num;
while (inputFile >> num) {
outputFile << num << endl;
}
outputFile.close();
inputFile.close();
return 0;
}
上面的代码中,我们打开了一个名为 input.txt 的输入文件和一个名为 output.txt 的输出文件。如果文件打开失败,!() 运算符将为真并输出错误消息。否则,我们将从输入文件中读取一个整数并将其写入输出文件中。
总结一下,!() 运算符是用于逆转输入输出流状态标识的函数,可以用于测试输入输出流是否处于错误状态,并且还可以用于释放和捕获流中的数据。在使用该函数时,我们应该注意手动清除流的状态和忽略余留的数据。