当我运行以下代码并编写例如“Peter”时,结果是我在文件中得到“Peter Peter”。
为什么?
#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "cstdlib"
#include "fstream"
#include "string"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ofstream File2;
File2.open("File2.dat",ios::out);
string name;
cout<<"Name?"<<endl;
while(!cin.eof())
{
cin>>name;
File2<<name;
}
return 0;
}
当我将 while 循环更改为
while(cin>>name)
{
File2<<name;
}
有用。但我不明白为什么第一种方法没有。
我无法回答我自己的问题(因为我没有足够的声誉)。因此,我在这里写下我的答案:
啊啊啊!!!好,谢谢。现在我明白了^^
我一直在测试
while(!cin.eof())
{
cin>>name;
File2<<name;
cout<<j++<<"cin.eof() "<<cin.eof()<<endl;
}
发生的情况是,当我提示crtl+z时,他仍处于 while 循环中。变量名称保持不变,并在下一行代码中添加到“File2”中。
以下是有效的:
while(!cin.eof())
{
cin>>name;
if(!cin.eof()){File2<<name;}
cout<<j++<<"cin.eof() "<<cin.eof()<<endl;
}