#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 我想把它读作 int 和
- 如果文件中有一个字符,我想将其读取为字符。
- 为什么在尝试将 b 读取为 int 后无法读取 'char b'?
最佳答案
int
读取失败后 failbit
流的设置。这会导致所有后续读取尝试失败。可以clear()
尝试后续读取之前的错误。
请注意 operator>>(int&)
将跳过前导空格。如果空格在您的应用程序中是有效字符,那么失败的 int
读取将产生不良副作用。如果文件是面向行的,那么另一种方法是使用 std::getline()
和 stoi()
处理数据。
关于c++ - 为什么不能在这个状态下执行 'ifstream',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338917/