我已经尝试了其他几个问题/教程中的代码,总是得到空格或者什么都没有。
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
,就好像没有字符一样。我做错了什么?
答案 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');
这是一本绝妙的读物。通常最好使用缓冲读取(例如逐行读取)。