#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
答案 0 :(得分:4)
在int
读取失败后,设置了流的failbit
。这会导致所有后续读取尝试失败。在尝试后续读取之前,可能会clear()
错误。
请注意,operator>>(int&)
会跳过前导空格。如果某个空格是您应用程序中的有效字符,则失败的int
读取将产生不良副作用。如果文件是面向行的,那么另一种方法是使用std::getline()
和stoi()
来处理数据。
答案 1 :(得分:0)
你试图两次读入(这是一个int)。你应该在a中阅读一次,然后只在b中阅读。 但是,我建议你使用更通用的方法,逐行阅读。