- 论坛徽章:
- 0
|
ls:
通过使用你给的那段代码,我发现,是可以正常的读取到文件结尾的,那么看来eof这个函数是没有问题.
我把in.read修改为in.getline结果程序没有读到文件结尾就跳出了,所以我觉得是in.getline()在使用时候的问题.经过排查,我发现当遇到文件中的一个字符的时候,in的流状态变为fail(),于是导致了没有读到最后.
有谁能解释一下什么时候会在读文件的时候出现流状态是fail(),这种情况很常见!
- #include <iostream>
- #include <fstream>
- using namespace std;
- #define BUFSIZE 20
- int main()
- {
- ifstream in("e:\\a.txt");
- cout << in.gcount() << endl;
- char buf[BUFSIZE];
- int i = 0;
- do {
- //in.read(buf, BUFSIZE );
- in.getline(buf, 20); //改动的地方
- std::streamsize n = in.gcount();
- cout.write( buf, n );
- } while( in.good() );//
- if( in.bad() || !in.eof() )
- {
- cerr << "error" << endl;
- }
- in.close();
- }
复制代码 |
|