刚写小一段代码,input,isearch均是int类型,ivec是vector<int>类型
1 cout << "Enter integers:";
2 while (cin >> input)
3 ivec.push_back(input);
4
5 cin.clear();
6 cin.ignore(1024);
7
8 cout << "Which number do you want to search:";
9 cin >> isearch;
在运行中
输入:若干整数 回车 Ctrl-Z 回车
奇怪,没有跳出第8行代码,然后尝试不断的输入回车,依然没有运行到第8行,无奈再次放大招Ctrl-Z,没有回车,直接就跳出了“Which number do you want to search:2281472 appears 0 times.”
(请无视“appears 0 times”)跳出来后程序直接退出了,也就是第9行的cin没有执行
这里的2281472难道是Ctrl-Z的int值?不懂...
当时就觉得奇怪呀,这是怎么回事,运行不到后面的cin(也就是第9行)
后来将cin.ignore(1024)修改为cin.ignore(3)后再次编译运行
输入:若干整数 回车 Ctrl-Z 回车 回车 回车 回车
正常跳出了第8行代码,输入了 23 回车程序正常退出
因此得出个结论:
当调用cin.ignore(10)时候,那么如果在缓冲区中字符数不足10的时候,你的程序将暂停,直到你输入到缓冲区的字符数达到了10,这条语句才运行结束,之后的语句才能运行。