而使用std :: CIN >>数以下列方式:CIN:检查次数为整数或浮点即使浮点值是1.000
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开头。如果行以浮点数开始,我想读取1000个浮点数。如果它是一个int,我想读取这个浮点数。我知道我可以将浮点数转换为int,并检查铸造的int是否等于浮点数,但当浮点数为1.000等平坦值时,这不起作用。
我宁愿不看使用函数getline整行(),因为后记分割是耗时的,我已经知道,所有输入的是,除了可能是第一个数字浮动。另一种方法是将每行的第一个值作为字符串读入并检查它是否包含句点。有没有办法,没有首先读取输入作为一个字符串,检查这个?或者是需要的字符串步骤。
由于“一把手”被声明为float则总是被储存为float,无论用户是否进入1.000或只是简单的1因此,没有,没有办法,你的代码可能可以区分这两种情况。 – Stuart