#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和
  • 如果文件中有char,我想将其读取为char。
  • 尝试将b读取为int后,为什么不能读取'char b'?
  • 最佳答案

    int读取失败后,将设置流的 failbit 。这会导致所有后续读取尝试失败。尝试后续读取之前,可能会给错误 clear() 错误。

    注意 operator>>(int&) 将跳过前导空格。如果空格是您应用程序中的有效字符,则失败的int读取将产生不希望的副作用。如果文件是面向行的,则替代方法是使用 std::getline() stoi() 处理数据。

    关于c++ - 为什么在这种状态下不能执行 'ifstream',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23338917/

    10-11 22:51
    查看更多