关于cin.ignore()函数的一个需要注意的地方
发布日期:2021-08-17 00:51:56 浏览次数:2 分类:技术文章

本文共 776 字,大约阅读时间需要 2 分钟。

刚写小一段代码,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,这条语句才运行结束,之后的语句才能运行。

转载于:https://www.cnblogs.com/wnarutou/archive/2012/03/18/2404719.html

转载地址:https://blog.csdn.net/weixin_30825199/article/details/99153819 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:oracle 查看、修改global_name 的方法 (转)
下一篇:工作流笔记第二天_流程定义的CRUD

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月11日 18时19分57秒