我正在尝试用C++编写一个简单的代码从文本文件中读取整数,当遇到负整数时应该停止读取。文本文件中每行包含1个正整数,最后一行是负整数。
我现在的代码使用eof来读取,但它也读取了负整数,而我不想要这个。
while(!inFile.eof())
{
inFile >> data;
}
文本文件
10
22
33
34
-1
提前感谢你的帮助 :)
我正在尝试用C++编写一个简单的代码从文本文件中读取整数,当遇到负整数时应该停止读取。文本文件中每行包含1个正整数,最后一行是负整数。
我现在的代码使用eof来读取,但它也读取了负整数,而我不想要这个。
while(!inFile.eof())
{
inFile >> data;
}
文本文件
10
22
33
34
-1
提前感谢你的帮助 :)
hmm..
int data = 0;
while(inFile >> data && data >= 0)
{
// do stuff with data.
}
您至少需要读取负数才能确定已经到达输入的末尾。
while( inFile >> data)
{
if ( data < 0 ) break;
}
istream::eof()
作为循环条件时,几乎可以确定代码是错误的。 - James Kanzeistream::eof()
是一个错误,应该指出这一点。(否则,Nim的回答是完美的。) - James Kanzewhile(!infile.eof())
{
infile>>data;
if(data>0)
cout<<data;
}
while(!inFile.eof())
{
inFile >> data;
if ( data < 0 ) {
break;
}
}
inFile >> data;
之前设置,但在此调用后将被设置。当它被设置时,您仍然使用data,即使该值现在基本上是随机的。请记住,最后一次成功读取将读取但不包括EOF。最后一次读取将尝试读取超过EOF并失败(此时您无法使用要读入的值)。 - Martin York
while (!eof)
这段代码。 - Lightness Races in Orbit