【发布时间】:2011-07-31 12:30:26
【问题描述】:
我试图用 C++ 编写一个简单的代码来从文本文件中读取整数,当遇到负整数时,代码应该停止读取。 txt文件每行包含1个正整数,最后一行是负整数。
我的代码现在使用 eof,它也读取负整数,这是我不想要的。
while(!inFile.eof())
{
inFile >> data;
}
文本文件
10
22
33
34
-1
提前致谢:)
【问题讨论】:
标签: c++
我试图用 C++ 编写一个简单的代码来从文本文件中读取整数,当遇到负整数时,代码应该停止读取。 txt文件每行包含1个正整数,最后一行是负整数。
我的代码现在使用 eof,它也读取负整数,这是我不想要的。
while(!inFile.eof())
{
inFile >> data;
}
文本文件
10
22
33
34
-1
提前致谢:)
【问题讨论】:
标签: c++
嗯..
int data = 0;
while(inFile >> data && data >= 0)
{
// do stuff with data.
}
【讨论】:
while (!eof) 只是出于风格原因,例如。
您至少需要读取负数来确定您已到达输入结尾。
while( inFile >> data)
{
if ( data < 0 ) break;
}
【讨论】:
istream::eof() 是一个循环条件,代码几乎肯定是错误的。)
istream::eof() 是原始代码中的一个错误,应该指出这一点。 (否则,尼姆的答案是完美的。)
while(!infile.eof())
{
infile>>data;
if(data>0)
cout<<data;
}
从文件中读取,检查是否大于零,然后打印出来
【讨论】:
也许像这样尝试测试传入整数的方法会起作用:
while(!inFile.eof())
{
inFile >> data;
if ( data < 0 ) {
break;
}
}
【讨论】:
inFile >> data; 之前设置的,而是在这个调用之后设置的。设置后,即使值现在基本上是随机的,您仍然使用数据。请记住,最后一次成功的读取将读取到 但不会超过 EOF。最后一次读取将尝试读取过去并失败(此时您无法使用正在读取的值)。