关于c++中的CTRL+Z的问题(附上代码)

#include <iostream>
#include <cstdlib>
#include <map>
#include <string>

using namespace std;

int main()
{
map< string,int > word_count;
map< string,int >::iterator m_iter;
string word;
string find_word;
int occurs = 0;

cout<<"please input a word and press (Ctrl+Z) to end"<<endl;
while(cin>>word)
{
pair< map<string,int>::iterator, bool > ret =
word_count.insert( make_pair( word,1 ));
if(!ret.second)
{
++ret.first->second;
}
}

for(m_iter = word_count.begin(); m_iter != word_count.end(); ++m_iter)
{
cout<<m_iter->first<<" occurs "<<m_iter->second<<" times "<<endl;
}

cout<<"please input the word you want to find: ";
cin>>find_word;
map< string,int >::iterator it= word_count.find(find_word);
if( it != word_count.end() )
occurs = it->second;
cout<<"the word ‘" <<find_word
<< "’has occurs "<<occurs<<" times "<<endl;

system("pause");
return 0;
}

这个是今天实验的时候遇到的问题,如下

这是一个统计单词输入个数的程序,在while部分,进行单词输入,

然后结束输入使用的方法是"ctrl+z",但是这样造成了一个问题。

就是现在的搜索部分,被直接跳过。

在网上找了一些资料,说是"ctrl+z"是结束目前窗口的输入流。

这样的话,那么有没有类似的方法可以停止while的循环,然后又不用去

停止整个窗口的输入流呢?

请各位老手指点一下,谢谢!

注:使用的IDE是 DEV C++;

第1个回答  2009-08-04
你可以输入一个不是英文字母的字符作为结束标志,也可以事先要求用户输入字符串的长度。。。
第2个回答  2009-08-04
while(cin>>word)
{
pair< map<string,int>::iterator, bool > ret =
word_count.insert( make_pair( word,1 ));
if(!ret.second)
{
++ret.first->second;
}
}
cin.clear(); //把输入流清空就可以了本回答被提问者采纳

关于c++中的CTRL+Z的问题(附上代码)
你可以输入一个不是英文字母的字符作为结束标志,也可以事先要求用户输入字符串的长度。。。

关于c++中ctrl+z的用法
上面程序运行后,除了关窗口外,退不出循环。此时只需按下ctrl+z(可能要按两次),也可以结束该程序。

C++中Ctrl+Z是怎么结束输入的?
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。Ctrl+Z:一般用于输入字符串时,比如下面这个程序。include <iostream> include <vector> include <string> using namespace std;int main(){ vector<string> a;string tmp;while (cin>>tmp){ a.push_back(tmp);} for (...

C++中ctrl+Z问题
while(cin>>temp)失败的条件是!cin,即cin.badbit、cin.failbit、cin.eofbit三者中有任意一者或以上被设置。Ctrl+Z会向控制台中输入一个EOF字符,cin读到该字符eofbit就会被设置,导致cin失败,结束循环。

c++如何编程使得输入ctrl+z时使一个循环结束
判断条件写为:while((c=getchar())!=EOF);就可以用ctrl+z结束循环了 C语言中,EOF即文档的结尾.但是,当你写一个小程序,并以EOF作为判断条件时,就无法输入文档的结尾了,只能人工输入一个,这个人工输入的文档结尾就是Ctrl+Z 比如:include <stdio.h> int main(){ int c;do { printf("请输入...

c++中 ctrl+z的小问题
一般用来截断输入流!例如:int n;vector<int> v;while(cin>>n)v.push_back(n);这样就可以来表示输入流结束!

C++编程 从键盘上多行输入,用Ctrl+Z结束输入,要求文件存盘再读出来...
ofs.close();ifstream ifs("data.txt");while(ifs.get(c)){ cout.put(c);n++;} cout<<endl<<"字符个数为:"<<n<<endl;ifs.close();return 0;} 不能明白你的意思,数组是用来存东西的,而不是用来输出东西的 说明ctrl+z结束时,需要输入两次,ctrl+z,这因为C++输入时的缓冲影响 的。

ctrl+z不能使用
电脑ctrl+z快捷键无法使用,是设置错误造成的,解决方法如下:1、首先把下载好的电脑键盘驱动进行压缩解压,如下所示。2、然后选择打开点击setup。3、然后在打开的页面中,点击下一步。4、然后点击安装,如下图所示。5、进入安装界面进行安装,等待一会自动安装完毕后,点击完成。6、随后打开控制面板如下...

C++的流结束标志Ctrl+Z
ctrl+z,相当于EOF,一个标志,在vc++6.0中,while(scanf("%s",s)!=EOF)就可以用ctrl+z结束这个while循环,而while(cin>>s)比较智能化,如果你看下cin的原型也许有帮助,cin只有遇到回车后,才把读入的数据处理,如果你事先把crtl+z和其他字符一起,形成字符串,该标志就当成字符一起突入了...

关于Windows系统中C++按“Ctrl+Z"退出循环的问题
vector下标越界,一开始没有为vector开辟内存空间,或者说没定义“数组”的长度。你试试vector<int> a(2);

相似回答