读取输入文件和输出与我预期不符

Reading an input file and the output is not as I expected

提问人:Omar 提问时间:10/23/2023 最后编辑:Łukasz ŚlusarczykOmar 更新时间:10/25/2023 访问量:14

问:

我的文件包含“abcdefg”。 为什么当我在控制台中使用这部分代码时,它会打印字母“g”?

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
    
int main () {
  char ch;
  fstream file;
  file.open("myfile.txt", ios::in);
  file.setf(ios::skipws);
  while (1) {
    file >> ch; 
    if (file.fail()) break;
    cout << ch; 
    cout << "\n";
  }
  file.close();
  return 0;
}

我希望输出除字母“g”之外的所有字符。

读取文件

评论


答:

0赞 Łukasz Ślusarczyk 10/24/2023 #1

对我来说,它给出了所有字母输出。没关系,因为当它读取最后一个字母“g”时,流仍然没有处于失败状态,因此打印了“g”。当您尝试读取某些内容但无法读取某些内容时,Stream 进入失败状态(读取“g”后面的内容)。参见 fstream::fail() 文档设置 failbit 时的规范