问题解决:C++使用while(cin>>ch)时键盘输入回车后仍难以终止程序运行

终止的诀窍就是:ctrl+zctrl+zctrl+z!!!
在VS2013中输入如下C++代码:功能是统计用户输入的字符个数
#include<iostream>
using namespace std;
int main(){
	char ch;
	unsigned num=0;
	cout << "请输入一段文本:" << endl;
	while (cin >> ch){
		++num;//统计字符个数
	}
	cout << "您输入的字符个数是:" << num << endl;
	system("pause");
	return 0;
}

(1)运行,输入abcde共5个字符后,回车,再输入ctrl+z,回车,得到结果如下:

请输入一段文本:
abcde
^Z
您输入的字符个数是:5
请按任意键继续. . .

既然程序都写好了,就多测试几个例子吧,以增进理解:
(2)再次运行,输入abcde共5个字符后,不回车,直接紧接着e输入ctrl+z,回车后,光标闪烁,仍没有成功退出while循环,此时,再次输入ctrl+z,回车,得到结果如下:

请输入一段文本:
abcde^Z
^Z
您输入的字符个数是:6
请按任意键继续. . .

此时字符数是6,比上例多1,说明ctrl+z被当做了一个字符计算入内。么有统计回车符。

(3)测试一下如果这段文本中包含了空格的情况:

请输入一段文本:
abc e
^Z
您输入的字符个数是:4
请按任意键继续. . .

可见,空格并没有被计算在内。

既然英文的都试过了,那就输入中文看看:
(4)再次运行,输入“我想吃汉堡”共5个汉字后,回车,再输入ctrl+z,回车,得到结果如下:

请输入一段文本:
我想吃汉堡
^Z
您输入的字符个数是:10
请按任意键继续. . .

5个汉字统计出的字符个数是10,可见博大精深的中国汉字确实是占两个字符!(骄傲脸)

原文地址:https://www.cnblogs.com/dindin1995/p/13059141.html