5.4.2节练习--- c++中多次cin会出现的问题。
来源:互联网 发布:怎么做数据分析 编辑:程序博客网 时间:2024/06/06 14:11
练习5.17
#include <iostream> #include <string>#include <vector>using namespace std;int main(){vector<int> num1, num2;int a = 0,b=0;cout << "请输入num1的元素:" << endl;while (cin >> a)num1.push_back(a);cin.clear();cin.sync();cout << "请输入num2的元素:" << endl;while (cin >> b)num2.push_back(b);auto num_min = (num1.size() > num2.size()) ? num2 : num1;auto num_max = (num1.size() < num2.size()) ? num2 : num1;//注意,vector是可以拷贝初始化的,这与数组不同。auto i = num_max.cbegin(), j = num_min.cbegin();while (j != num_min.cend() && (*i == *j)){++i;++j;}if (j == num_min.cend())cout << "他们中较短者是较长者前缀" << endl;system("pause");return 0;}
在这个程序中,有一个比较有趣的问题,就是程序出现了两次cin>>
while (cin >> a)num1.push_back(a);cin.clear();cin.sync();cout << "请输入num2的元素:" << endl;while (cin >> b)num2.push_back(b);当我第一次编写程序时,没有添加
cin.clear();cin.sync();
即:
while (cin >> a)num1.push_back(a);
cout << "请输入num2的元素:" << endl;while (cin >> b)num2.push_back(b);
结果会导致什么呢?
即输入 1 2 3 4 回车 ^z 回车 直接输出“请输入num2元素”然后结束,就是没有给第二个while(cin>>b)输入。同样我输入1 2 3 4 ^z 回车是一模一样的结果。
原因在哪?我看了其它人的一些回答,比较认同,贴出来看看:
我认为是这样的,^z后代表整个输入流结束了,即使后面有cin,也不会在读入数据了。
那么解决办法是加上这两条:
cin.clear();cin.sync();不能只加cin.clear()。否则还是会和之前的结果一样。
由于还没有学到流错误等相关知识,难免会理解不正确,请大家指正!
0 0
- 5.4.2节练习--- c++中多次cin会出现的问题。
- JS callback中alert弹窗出现多次的问题
- 面试中会出现的问题
- LVN_ITEMCHANGED通知会响应多次的问题
- LVN_ITEMCHANGED通知会响应多次的问题
- C/C++中头文件多次包含的问题
- C语言中以十六进制输出字符型变量会出现'ffffff"的问题
- C语言中以十六进制输出字符型变量会出现'ffffff"的问题
- C语言中以十六进制输出字符型变量会出现'ffffff"的问题
- C语言中以十六进制输出字符型变量会出现'ffffff"的问题
- HOOK截获中文输入会出现响应多次的情况。
- HOOK截获中文输入会出现响应多次的情况
- 关于一段js中出现多次使用setInterval(出现计时累加)的问题
- C++中为什么有时候会出现使用cin后在再使用getchar()会没有用
- C/C++中cin,cin.getline,getline的用法
- 多次出现无法连接的问题!
- C++中cin和cin.getline函数连用的问题
- C++调用C链接库会出现的问题
- 卡片作业
- Gym
- while(cin>>ch)如何退出
- windows下简单的C语言服务器(TCP)
- VR系列——Oculus Rift 介绍指南:一、前言
- 5.4.2节练习--- c++中多次cin会出现的问题。
- poj 2181 Jumping Cows 贪心
- linux动态库
- 数组初始化是在编译器还是在运行期?
- csu1777——大还是小?(字符串处理?)
- hibernate教程--关联关系的映射详解
- 微信授权登录问题汇总
- [牛客]插入排序练习题
- PAT 1015. 德才论