在以下列方式使用 std::cin >> number 时:
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
这些行将以浮点数或整数开头。如果这些行以浮点数开头,我想再读 1000 个浮点数。如果它是一个 int,我想读取那个数量的浮点数。我知道我可以将 float 转换为 int 并检查转换的 int 是否等于 float,但是当 float 具有诸如 1.000 之类的平面值时,这将不起作用。
我宁愿不使用 getline() 读取整行,因为在后面拆分它非常耗时,而且我已经知道所有输入都是浮点数,除了可能的第一个数字。另一种方法是将每行的第一个值作为字符串读入并检查它是否包含句点。有没有办法在不首先将输入作为字符串读取的情况下进行检查?或者是否需要字符串步骤。