iostream输入问题
iostream input issue
当我们输入第一个值y
作为float,例如。2.0,它在不允许第二个值z
输入的情况下打印答案。为什么?
#include <iostream>
#include <conio.h>
using namespace std;
int add(int x,int y)
{
int result;
result=x+y;
return result;
}
int main()
{
int x;
int y;
int z;
cin>>y>>z;
x=add(y,z);
cout<<x;
getch();
}
从流中提取,只要以您提取的类型有效的格式,它将尝试消耗所有输入。例如,使用此代码
int x, y;
cin >> x >> y;
和此输入:
123.456
它将在x
中读取123,然后完成。然后,它将尝试读取y
中的整数。由于123
已经提取,因此可用的第一个字符是'.'
。这不是一个有效的整数,因此将在流上设置failbit
标志(您可以通过调用cin.fail()
进行检查),除非您通过调用cin.clear()
清除错误标志,否则所有其他提取将失败。
如何解决此问题取决于您要做什么。您可以选择双打并检查其小数零件是否为0。您可以采用一整行输入,将其放入弦线中,提取整数并检查流中是否剩下任何垃圾。
无论如何,检查提取成功!始终在某些布尔上下文中使用流提取
if (cin >> x) { // <-- implicit conversion of the stream to bool
// ok, it's safe to use x
} else {
// an error occured
}
至少明确检查errros:
cin >> x;
if (cin.fail()) { /* error */ }
输入 float value
时,例如 2.0
, cin
输入中的贪婪分配给y的数字尽可能多地分配给y,然后在这里 2
,然后寻找第二个数字(y是y是y是一个 .
,因为y是一个integer
)。由于它找到了.
,因此终止并丢弃了其余的输入。
在包含语法错误时编辑了您的代码。
#include<iostream>
using namespace std;
int add(int x,int y)
{
int result;
result=x+y;
return result;
}
int main()
{
int x,y,z;
cin>>y>>z;
x=add(y,z);
cout<<x;
return 0;
}
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 编写时C++中的输入重定向问题
- 输入std::数组时出现问题
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 打印时有二叉树问题.用户输入不打印任何内容
- 用户输入字符串的文件附加问题..C++
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- 我应该如何在C++中使用结构体解决输入失败的问题?
- 我遇到使用 c++ 逐行读取输入文件的问题
- 在 2D 矢量中获取多个输入时出现问题
- 不确定出了什么问题(字符串输入)
- 在C++中读取 unicode 输入时出现问题
- 函数,从问题中获取输入,并在主函数中使用该输入
- c++中重载输入运算符的问题
- 通过终端在文件中输入时检测EOF(文件结束)时出现问题
- C ++回测问题:如何检查构造函数在假定失败时是否失败(给定输入的无效参数)
- 从标准输入读取多个类型时出现问题
- visual studio 2008 - c++问题输入