首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教为什么加上 !cin.eof() 后结果就不对了呢

2012-02-14 
请问为什么加上 !cin.eof() 后结果就不对了呢EXAMPLE 1:C/C++ codeint main(void){ifstream infileofstre

请问为什么加上 !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

热点排行