cin:即使浮点值为1.000,也要检查数字是整数还是浮点
cin: check if number is an integer or float even if float value is 1.000
同时以以下方式使用std::cin>>编号:
float number;
while(std::cin >> number) {
//perform a check here if possible
//if number does not contain a decimal point do this
for(int i = 0; i < number; i++) {
std::cin >> readMoreFloats;
}
//otherwise read 1000 more floats
}
有没有一种方法可以区分以下类型的线路:
1.500 (1000 more floats)
2 2.000 2.000
行将以float或int开头。如果行以float开头,我想再读取1000个float。如果它是一个int,我想读取浮点数。我知道我可以将float强制转换为int,并检查强制转换的int是否等于float,但当float的值为1.000时,这将不起作用。
我宁愿不使用getline((读取整行,因为在单词后拆分它很耗时,而且我已经知道除了第一个数字之外,所有的输入都是浮点的。另一种方法是将每行的第一个值作为字符串读取,并检查它是否包含句点。有没有一种方法可以在不首先将输入作为字符串读取的情况下进行检查?还是需要字符串步骤。
您真的需要将其作为字符串读取以检查是否有点吗?
为什么不先取一个整数呢?
int intNum = 0; char ch;
cin >> intNum;
cin.get(ch);
现在您可以使用另一个整数read&如果有点,则合并为浮点,即ch=='.'
搜索点,如果它们是字符串,则将其解析为字符串。
实现这一点的一种方法是将第一个字段作为字符串读取,然后测试它是否包含小数点。如果是,请将其转换为浮点值并阅读更多内容。否则,将其强制转换为整数并读取该整数。这很好,因为cin也会自动在字符串的空格处中断。
我认为以下代码应该关于工作:
#include <iostream>
#include <string>
int main()
{
std::string myStr;
std::cin >> myStr;
float myVal = 0;
if(myStr.find('.') != std::string::npos)
{
std::cout << "Is floating point, now convert this and read lots.n";
float myFloat = atof(myStr.c_str());
for(int k =0; k < 1000; k++)
{
std::cin >> myVal;
}
}
else
{
std::cout << "Is integer, so read just that manyn";
int myInt = atoi(myStr.c_str());
for(int k =0; k < myInt; k++)
{
std::cin >> myVal;
}
}
return 0;
}
假设我正确理解了这个问题,也许你需要这样的东西:
using namespace std; // I'm lazy
string temp;
int number;
while(std::cin >> temp)
{
number = 0;
if (temp.find(".") != string::npos) number = 1000; // string has decimal point
else istringstream(temp) >> number; // no decimal point, probably an integer
for(int i = 0; i < number; i++) {
std::cin >> readMoreFloats;
}
}
我们使用检查字符串是否有小数点的基本方法来指示它是否为浮点值。假设您的输入文件总是正确格式化,并且总是省略整数的小数点(即使根据某些解释,像"2."这样的值可能是有效的(,这应该如您所期望的那样工作。
相关文章:
- 用于检查数字是否有数字或可被该数字的值整除的程序
- 如何使用递归检查数字是否有重复数字?
- 将 C 函数转换为 C++ 以检查数字是否有效
- 检查数字是否为素数的算法
- 如何检查数字的不合理性
- 在C/C++中检查数字是否为整数(不带scanf/gets/etc)
- 使用函数检查数字是素数、偶数还是奇数
- 检查数字是否已在数组中的程序
- 编写一个函数,用递归函数检查数字是否是正方形
- 检查数字在C 中未返回正确结果的功能
- 接收数字和数字的算法并检查数字内部数字的次数
- 使用for循环检查数字的顺序、递减顺序和递增顺序
- 如何在使用随机生成器(srand,rand)时检查数字是否不同
- 检查数字是否是素数,哪个是质数(C ++)
- 递归检查数字的有效性
- 如何递归检查数字是否为斐波那契数
- 检查数字是否是素数
- 算法-检查数字是否已经在列表中
- 检查数字是否为NaN失败
- 验证代码以检查数字是否为回文