通过char读取文本文件char

时间:2014-02-11 17:34:50

标签: c++ file-io

我已经尝试了其他几个问题/教程中的代码,总是得到空格或者什么都没有。

in.txt:

a
z

main.cpp中:

ifstream in (argv[1]);
in.open(argv[1]);
if (!in.is_open()) exit(EXIT_FAILURE);
char c;
in >> c;
cout << c;

不会将任何内容传递回cout,就好像没有字符一样。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您尝试重新打开已打开的文件而不释放资源,然后将其置于不一致的状态

http://www.cplusplus.com/reference/fstream/ifstream/ifstream/

#include<fstream>
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char*argv[]){

  std::ifstream in ("mytext.txt");
  char c;
  in >> c;
  cout << c;

  in.open("mytext.txt");

  if(!in.good())
    cout << "unconsistent state!";

  return 0;

}
  

如果对象已经有一个关联(打开)的文件,那么该函数   失败。

答案 1 :(得分:0)

要按字符读取文件,同时注意输入文本的格式,可以使用以下命令:

if (in.is_open())
    char c;
    while (in.get(c)) {
        std::cout << c;
    }
}

其中in是类型std::ifstream的输入流。您可以打开这样的文件,如下所示:std::ifstream in('myFile.txt');

这是一本绝妙的读物。通常最好使用缓冲读取(例如逐行读取)。