工具及版本:IDE:VS2015 C++ 11 win7_64
问题描述:
在学习C++过程中经常有从控制台读取字符串的例程,简单的读取可以如下:
while(cin >> str)
````
然而奇怪的是,貌似控制台出来后,输入一串字符回车后,并不能读取到结束符eof似得,以至于无法跳出while循环。在没遇到今天的问题之前,一直用getline(cin, str)搞定。
今天,学习到关联容器部分,在例程:
map<string, size_t> word_count;
string word;
while (cin >> word)
++word_count[word];
for (const auto &w : word_count)
cout << w.first << "occurs " << w.second << ((w.second > 1) ? " times" : " time") << endl;
中通过控制台输入单词并统计每个单词出现多少次的时候,循环while无法结束跳出,请问怎么避免这个问题?如图:

不管我按了多少次enter。
这个不解决,我估计后面的学习不大好调试,求大神指点迷津。
问题描述:
在学习C++过程中经常有从控制台读取字符串的例程,简单的读取可以如下:
while(cin >> str)
````
然而奇怪的是,貌似控制台出来后,输入一串字符回车后,并不能读取到结束符eof似得,以至于无法跳出while循环。在没遇到今天的问题之前,一直用getline(cin, str)搞定。
今天,学习到关联容器部分,在例程:
map<string, size_t> word_count;
string word;
while (cin >> word)
++word_count[word];
for (const auto &w : word_count)
cout << w.first << "occurs " << w.second << ((w.second > 1) ? " times" : " time") << endl;
中通过控制台输入单词并统计每个单词出现多少次的时候,循环while无法结束跳出,请问怎么避免这个问题?如图:

不管我按了多少次enter。
这个不解决,我估计后面的学习不大好调试,求大神指点迷津。
