请问为什么加上 !cin.eof() 后结果就不对了呢
EXAMPLE 1:
- C/C++ code
int main(void){ ifstream infile; ofstream outfile; infile.open("E:\\IN.TXT"); if (!infile) return -1; outfile.open("E:\\OUT.TXT"); if (!outfile) return -1; string str; while(infile >> str, !infile.eof()) //这里有 !infile.eof() { outfile << str <<endl; infile.clear(); } infile.close(); outfile.close(); }EXAMPLE 2:
- C/C++ code
int main(void){ ifstream infile; ofstream outfile; infile.open("E:\\IN.TXT"); if (!infile) return -1; outfile.open("E:\\OUT.TXT"); if (!outfile) return -1; string str; while(infile >> str) //这里没有 { outfile << str <<endl; infile.clear(); } infile.close(); outfile.close(); }-----------------------------------
IN.TXT 中内容:
ABC
DEF
EFF
结果如果用 EXAMPLE 1 运行,OUT.TXT 中有:
ABC
DEF
如果用 EXAMPLE 2 运行,OUT.TXT 中有
ABC
DEF
EFF
最后那个EFF为什么EXAMPLE 1无法复制呢?刚学这一章,不太明白
[解决办法]
我先消灭零回复再说
[解决办法]
假设只有一行:
IN.TXT 中内容:
ABC
---------
while(infile >> str, !infile.eof()) //这里有 infile.eof() 就返回true了。
{
outfile << str <<endl;
infile.clear();
}
infile >> str, !infile.eof() ,这是逗号表达式,表达式的值是第二个分句的值,即!infile.eof() = false
所以,while 1次也不能循环。
所以无法复制ABC