【发布时间】:2012-12-03 18:46:16
【问题描述】:
可能重复:
Why is iostream::eof inside a loop condition considered wrong?
我正在通过 cin.get() 读取一组字符,我注意到我的 cin.get() 在输入结束时获得了一个 exra 字符。可能有人知道如何解决这个问题吗?这是我的代码:
unsigned char c;
while(!cin.eof())
{
c = cin.get();
cout << (int)c << endl;
}
我的问题是它得到的字符是 255 ascii 值之一。我只是不希望它得到这个额外的字符,但如果用户输入 255 的 ascii 值而不是最后的垃圾字符,那应该没问题。我的输出就是一个例子:
如果我在输出中输入 abc\n:
我明白了 97 98 99 10 255
但我想要: 97 98 99 10
关于如何解决这个问题的任何想法?谢谢!
【问题讨论】:
-
为什么是
!cin.eof()?是来自文件的输入吗?