vector<int> iv1, iv2;
 cout << "请为第一个vector容器装填整数元素,以s结尾:" << endl;
 int num = 0;
 while(cin >> num)
 {
  iv1.push_back(num);
 }
 print(iv1.begin(), iv1.end());   // 自己写的打印容器函数

//cin.clear();
 //cin.sync();

cout << "请为第二个vector容器装填整数元素,以s结尾:" << endl;
 while(cin >> num)
 {
  iv2.push_back(num);
 }
 cout << "iv2: " << endl;
 print(iv2.begin(), iv2.end());

  上面这段代码在为第一个容器填入数据之后,再为第二个容器填入数据时会直接跳过循环,直接输出第二个容器。

  下面附上我的调试过程:

  1.加上cin.clear() 调试,无效。 // clear函数用来把错误状态修正,因为第一次循环中有cin>>num,输入了s对应的类型不对,所以会有错误状态

  2.加上了cin.get(),还是无效,我的想法是会不会是我输入的s这个字符还在缓冲区,用cin.get()吃掉,仍然失败。。。

  3.没辙了,用c语言的清除缓冲区:scanf("%*[^\n]");scanf("%*c");没用。。。

  4.百度搜了一下,发现了一个函数cin.sync();准确的讲是sync()函数,完美解决问题,这个就是输入流的清除缓冲区函数.

  5.今天早上来完善后备功能时,仔细想了想,昨天用cin.get()时真的把字符s清掉了吗?没有!!!因为我打完s之后有一个回车键,所以要两个cin.get()才能吃掉字符s.

算是告一段落吧,总之cin.clear()清除错误状态,cin,sync()是清缓冲区。

关于c++的输入的更多相关文章

  1. Mapreduce的文件和hbase共同输入

    Mapreduce的文件和hbase共同输入 package duogemap;   import java.io.IOException;   import org.apache.hadoop.co ...

  2. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

  3. 防御XSS攻击-encode用户输入内容的重要性

    一.开场先科普下XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶 ...

  4. UITextView 输入字数限制

    本文介绍了UITextView对中英文还有iOS自带表情输入的字数限制,由于中文输入会有联想导致字数限制不准确所以苦恼好久,所以参考一些大神的博客终于搞定,欢迎大家参考和指正. 对于限制UITextV ...

  5. scanf()中清除输入缓冲区的几种方法归纳

    应用场景:我们使用多个scanf()的时候,如果输入缓冲区还有数据的话,那么scanf()就不会询问用户输入,而是直接就将输入缓冲区的内容拿出来用了,这就导致了前面的错误影响到后面的内容,为了隔离这种 ...

  6. logstash file输入,无输出原因与解决办法

    1.现象 很多同学在用logstash input 为file的时候,经常会出现如下问题:配置文件无误,logstash有时一直停留在等待输入的界面 2.解释 logstash作为日志分析的管道,在实 ...

  7. iOS 委托与文本输入(内容根据iOS编程编写)

    文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑  JXHypnosisViewController.m 修改  loadView 方法,向  ...

  8. WPF 捕获键盘输入事件

    最近修改的一个需求要求捕获键盘输入的 Text,包括各种标点符号. 最开始想到的是 PreviewKeyDown 或者 PreviewKeyUp 这样的键盘事件. 但是这两个事件的对象 KeyEven ...

  9. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  10. Html5下拉控件同时支持文本输入和下拉代码

    有时候,下拉框不能满足我们的业务需求,还需要同时支持用户输入内容,默认的select标签是不支持用户输入的,下面我说一下原生的select如何支持用户输入,代码如下: <!DOCTYPE htm ...

随机推荐

  1. Sql FAQ

    1.查询结果根据条件翻译成其他值 then '及格' else '不及格' end from S_STUDENT then '及格' else '不及格' end from S_STUDENT 2.s ...

  2. 修改Tomcat Connector运行模式,优化Tomcat运行性能

    Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一.不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运 ...

  3. Install Package and Software

    svn http://tortoisesvn.sourceforge.net/ git https://download.tortoisegit.org/ http://git-for-windows ...

  4. Bootstrap-分页插件Paginator

    Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态 ...

  5. 解决TortoiseCVS中文乱码

    解决TortoiseCVS中文乱码必备,解决方法: 第一:卸载和TortoiseCVS安装一起安装的CVSNT. 第二:安装本版本CVSNT. CVSNT下载地址:http://down.51cto. ...

  6. 浅谈C语言中的联合体

    联合体union 当多个数据须要共享内存或者多个数据每次仅仅取其一时.能够利用联合体(union).在C Programming Language 一书中对于联合体是这么描写叙述的: 1)联合体是一个 ...

  7. UDP包的最大大小是多少?

      每个udp包的最大大小是多少?    65507 约等于 64K 为什么最大是65507?    因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K ...

  8. shell 两个rpm包做差分

      当前目录下两个rpm包做差分. *.rpm 两个目录,解压rpm包. export LANG=c 差分判断是脚本还是Binary Files 脚本添加命令行提示符,awk. [root@sj_x8 ...

  9. I'm back

    亲爱的博友们, 请忽略这一条, 这只是我个人的一个记录.

  10. 读写应用程序数据-SQLite3

    SQLite3是嵌入到ios中的关系型数据库.对存储大规模的数据非常实用,使得不必将每个对象加到内存中. 支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串和文本).BLOB(二进制 ...