ifstrem的eof狀態問題
freebsd 5.3, gcc3.4.2 這樣一段代碼, ifstream infile; string line; infile.open(file1); cout infile.is_open()= infile.is_open() endl; cout infile.eof()= infile.eof() endl; while(!infile.eof()){ std::getline(infile, line); } infile.close();
freebsd 5.3, gclearcase/" target="_blank" >cc3.4.2
這樣一段代碼,
ifstream infile;
string line;
infile.open("file1");
cout << "infile.is_open()=" << infile.is_open() << endl;
cout << "infile.eof()=" << infile.eof() << endl;
while(!infile.eof()){
std::getline(infile, line);
}
infile.close();
infile.open("file2");
cout << "infile.is_open()=" << infile.is_open() << endl;
cout << "infile.eof()=" << infile.eof() << endl;
infile.close();
輸出的結果是,
infile.is_open()=1
infile.eof()=0
infile.is_open()=1
infile.eof()=1
而如果在file1的操作中去掉那段while的讀操作,此時結果為,
infile.is_open()=1
infile.eof()=0
infile.is_open()=1
infile.eof()=0
看來close()并沒有清除掉eof狀態,解決的方法是調用一次clear()。
原文轉自:http://www.anti-gravitydesign.com
- 評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
-
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97
|