输入字符串时跳过cin
Skipped cin when a string is entered?
我是C++的新手,我正在试验C++中的函数是如何工作的。
#include <iostream>
using namespace std;
int add(int num, int num2){
return num + num2;
}
int main(){
int n1, n2;
cout << "firstt";
cin >> n1;
cout << "secondt";
cin >> n2;
cout << "----------nResultt" << add(n1, n2) << endl << endl;
return 0;
}
当我输入两个数字时效果很好;但当我输入一个字符串时,它只是跳过cin >> n2
行并返回6959982
。
first test
second ----------
Result 6959982
为什么会发生这种情况?
什么都不读。Stream获取失败位并忽略所有后续读数。
6959982 is initial value of n2.
你应该检查阅读结果。示例:
if(!(cin >> n1)) {
cout << "input is garbage!";
}
http://www.parashift.com/c++-faq/istream-and-ignore.html
// Ask for a number, and if it is not a number, report invalid input.
while ((std::cout << "Number: ") && !(std::cin >> num)) {
std::cout << "Invalid Input." << std::endl;
}
有趣的数字是因为在C++中,整数默认不是0(它们可能取决于实现)。因此,无论何时声明一个数字,都应该将其设置为默认值:
int x = 0;
相关文章:
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 由cin中的字符串中未捕获空白引起的分割错误
- cin >> int 给定一个字符串将 int 赋值为 0
- 从 cin 读取不会返回整个输入字符串
- 而循环跳过 cin.getline() 对于 C 字符串
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- C++程序在将 int 与 cin 一起使用时有效,但不能使用字符串
- 有没有办法让C++从 cin 中接收不确定数量的字符串?
- 在循环中使用 cin.get() 输入字符串
- 为什么 cin 在包含字符串标头后接受字符串输入
- 使用分配构造字符串时是否可以使用 cin?
- cin>>gender 和 cin>>*gender ( c 样式文本字符串)有什么区别
- CIN 标准::带空格的字符串
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:在 cin 重载中拼接字符串
- STD :: cin和Scanf()应用于字符串之间的区别
- 如何在CIN中以C 的CIN中的所有读取为字符串
- 将字符串从BASH脚本(C 程序)推入CIN
- cin字符串转换为Vector(c++)
- cin字符串到一个向量中,并对它们进行快速排序