我有这个文本样本
Ahmed 10
kmal 5
doola 6
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码来阅读它
if (myfile.is_open())
{
while ( myfile.good() )
{
myfile >> name;
myfile >> phone;
cout << name <<" "<<phone<<endl;
}
myfile.close();
Run Code Online (Sandbox Code Playgroud)
}
我得到了这个输出
Ahmed 10
kmal 5
doola 6
doola 6
Run Code Online (Sandbox Code Playgroud)
为什么这段代码会读取最后一行两次?
myfile.good()读取失败后变为假.与...相同myfile.eof().
你想要的基本上是:
myfile >> name;
myfile >> phone;
if (!myfile.good()) break;
Run Code Online (Sandbox Code Playgroud)
这可以缩短为:
if (!(myfile >> name >> phone)) break;
Run Code Online (Sandbox Code Playgroud)
或者最后:
while (myfile >> name >> phone) { ... }
Run Code Online (Sandbox Code Playgroud)