一个简单但是我不觉得简单的C++问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:13:47
#include <iostream>

using namespace std;

int main()
{
char ch = 0;
char cc = 0;
do
{
if(cin.get(ch)) cc = ch;
}
while(cout<<cc, ch != '\n');
cout<<cc;
//pause
cin>>cc;
return 0;
}

代码如上,很短,
假设运行程序,我输入AA
那么,包括我输入的部分,程序最后一共显示了什么
(最后那个cin>>cc;只是防止程序一闪就关了,不包括那个部分)
运行结果和我事先想的不一样
请个懂的人回答一下,为什么
其实我想知道为什么cin和cout为什么会是那样的。。和它们的工作原理

cin cout 是C++中的标准输入输出流。

当 按下一个键后,由操作系统将按键的ASCII值放在 键盘缓冲区中,由cin
读出来,cin.get(ch)一次读一个按键的值然后处理,所以其输出就是
AA\n\n
在循环中输出的是AA\n
最后的换行 是循环后的输出语句输出的

你是不是 想让它按下一个键就输出
所以 你事先想的就 AAAA\n

其实你也可以实现按下一个键就将其输出。
不过不是用cin

你在msdn中找找其他的函数
我知道的一个C中的函数可以
bioskey()
头文件是 bios.h

这有它的用法
http://baike.baidu.com/view/653950.htm

祝你好运!

AA啊,你预想的是啥?

cin,cout是按stream来处理的,你输入的AA都会放到缓冲区里,而ch为char,因此一次读一个char,于是会读三次(即A,A,\n),也会输出三次(同上),然后还有个cout输出,因为此时cc=='\n',所以还会输出一次回车换行。所以结果就是:
AA
AA

最后一次cin的字符
个人理解哈

学习的时候认真点就可以咯!