Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cin.get多了一个字符?_C++_Io_Cin - Fatal编程技术网

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