fstream.getline及clear使用疑问-在线等回复
代码:
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
fstream ctrl;
char cTmp[101];
ctrl.open("f1.ctrl");
while(ctrl.getline(cTmp,100))
{
cerr<<"getline "<<cTmp<<endl;
}
cerr<<"close" <<endl;
ctrl.close();
ctrl.open("f2.ctrl");
while(ctrl.getline(cTmp,100))
{
cerr<<"getline "<<cTmp<<endl;
}
cerr<<"close" <<endl;
ctrl.close();
return 0;
}
文件:
f1.ctrl及f2.ctrl
内容都为
row1
row2
(注意:row2后没跟回车换行)
输出结果为
getline row1
getline row2
close
close
第二个文件读不出来了。
如果我在close()前,先加clear()或者,在文件中的row2后面加回车换行,输出结果为:
getline row1
getline row2
close
getline row1
getline row2
close
为什么getline有空行的时候可以不用clear,而没空行就必要用clear?