#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cout << "Enter characters; enter # to-quit:\n";
cin >> ch;
while (ch != '#')
{
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
return 0;
}
代码cout << ;是标准输出流,意思是把<<符号后面的内容输出到屏幕上光标所在的位置;
代码cin>>ch是标准输入流;意思是把键盘输入,暂存到符号>>后面的变量ch中保存起来,
原代码while (ch != '#') { cout << ch; ++count; cin >> ch; };是一个循环输入,代码(ch != '#')意思是键盘输入的字符ch不是符号"#"的判断;代码cout << ch;意思是把键盘输入的字符输出到屏幕,代码++count意思是,累加输入次数;代码cin >> ch意思是等待下次键盘输入,并把输入存入ch变量覆盖原变量内容,然后会回到while子句,开始判断新的输入
所以 原代码是不断判断你键盘输入是否是符号"#",如果本次输入的字符不是符号"#",就累加输入次数,然后可继续输入字符,这样循环,知道输入的字符是符号"#",while循环的判断条件就为假,则退出循环,程序结束
循环启动的时候,cout << ch 会打印出ch的第1个字符,然后count加1,而问题在于为何cin >> ch就能使得下一次的循环在cout << ch的时候打印ch的第2个字符?cin >> ch究竟是在干嘛?把什么cin到了ch中?
是否是因为,cin >> ch这一步输入了一段字符串,存储在队列中,cout打印出第1个后,cin将队列中的第2个输入进ch中,然后接着打印,直至循环终止?