#include <iostream>
#include <fstream>
using namespace std;
int main() {
int a;
char b;
ifstream in("a.txt");
if (!(in >> a))
in >> b;
if (!(in >> a))
in >> b;
in >> b;
in >> b;
cout << a;
cout << b;
}//source code
5 a b c d e
//a.txt
最佳答案
在int
读取失败后,将设置流的 failbit
。这会导致所有后续读取尝试失败。尝试后续读取之前,可能会给错误 clear()
错误。
注意 operator>>(int&)
将跳过前导空格。如果空格是您应用程序中的有效字符,则失败的int
读取将产生不希望的副作用。如果文件是面向行的,则替代方法是使用 std::getline()
和 stoi()
处理数据。
关于c++ - 为什么在这种状态下不能执行 'ifstream',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23338917/