次のコードを実行し、たとえば「Peter」と書くと、ファイルに「PeterPeter」が含まれます。
なんで?
#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;
}