使用cout输出cin.get()读取的int类型值:输出中‘10’的来源疑问
解答:输出中的“10”来源解析
首先先把你的代码格式化出来,方便参考:
#include<iostream> using namespace std; int main() { int c; cout<<cin.eof()<<endl; while((c=cin.get())!=EOF) { cout<<c<<endl; } cout<<cin.eof()<<endl; return 0; }
你看到的输出里的10,其实是**换行符(ASCII编码为10,对应字符'\n')**的整数表示,具体原因如下:
cin.get()会读取输入流中的每一个字符,包括空格、换行这类空白字符,不会像cin >> c那样自动跳过它们。- 当你在Dev-C++的控制台输入内容后按下回车键时,这个操作会向输入流中插入一个换行符
'\n'(Windows系统里的回车实际是\r\n两个字符,但在文本模式下,输入流会自动把\r\n转换为单个\n)。 - 你的代码里用
cout << c << endl输出的是字符对应的ASCII整数值,所以这个换行符就被输出成了数字10。
而你提到的cout.put(c),它的作用是直接输出ASCII值对应的字符,所以如果把代码里的cout<<c<<endl换成cout.put(c);,这个10就会被输出成一个换行,你就看不到这个数字了。
举个实际的例子:如果你输入test然后回车,程序的输出会是这样:
0 116 101 115 116 10 1
这里第6行的10就是你疑惑的那个换行符的ASCII值。
内容的提问来源于stack exchange,提问作者Golden Fish
相关产品推荐
相关产品推荐

