C++ cin.get多了一个字符?
可能重复:C++ cin.get多了一个字符?,c++,io,cin,C++,Io,Cin,可能重复: 我通过cin.get()读取了一组字符,我注意到我的cin.get()在输入的末尾得到了一个exra字符。有人知道怎么解决这个问题吗?这是我的密码: unsigned char c; while(!cin.eof()) { c = cin.get(); cout << (int)c << endl; } 无符号字符c; 而(!cin.eof()) { c=cin.get(); cout。它几乎总是产生错误代码,就像这里一样 相反,请尝试: i
我通过cin.get()读取了一组字符,我注意到我的cin.get()在输入的末尾得到了一个exra字符。有人知道怎么解决这个问题吗?这是我的密码:
unsigned char c;
while(!cin.eof())
{
c = cin.get();
cout << (int)c << endl;
}
无符号字符c;
而(!cin.eof())
{
c=cin.get();
cout。它几乎总是产生错误代码,就像这里一样
相反,请尝试:
int c;
while ( (c=cin.get()) != EOF ) {
cout << c << endl;
}
intc;
而((c=cin.get())!=EOF){
cout。它几乎总是产生错误代码,就像这里一样
相反,请尝试:
int c;
while ( (c=cin.get()) != EOF ) {
cout << c << endl;
}
intc;
而((c=cin.get())!=EOF){
cout不带参数的函数返回一个int\u type
,而不是一个char
。在流的末尾,它返回一个特殊的非字符值,表示文件的结尾(通常为-1)。通过分配cin.get()的结果
直接指向无符号字符
,您无意中丢弃了此eof信息。相关文档引用如下:
1) 读取一个字符并返回它(如果可用)。否则,返回Traits::eof()
并设置failbit
和eofbit
不带参数的函数返回一个int\u type
,而不是char
。在流的末尾,它返回一个特殊的非字符值,表示文件的结尾(通常为-1)。通过指定cin.get()的结果
直接指向无符号字符
,您无意中丢弃了此eof信息。相关文档引用如下:
1) 读取一个字符并返回它(如果可用)。否则,返回Traits::eof()
并设置failbit
和eofbit
Why!cin.eof()
?是来自文件的输入。?Why!cin.eof()
?是来自文件的输入。虽然您可能不应该使用EOF
,因为trait可能在文件末尾返回另一个值,而不是-1
,对吗?@Alexiswike-可能是一般的,但不是专门针对cin
的std::cin
将始终使用std::char\u traits
,它使用EOF
虽然您可能不应该使用EOF
,因为trait可能在文件末尾返回另一个值,而不是-1
,对吗?@AlexisWilke-可能是一般情况,但不是专门针对cin
,std::cin
将始终使用std::char\u traits
,它使用EOF
。