我正在尝试执行以下操作:
stringstream convert1(Model_str.substr(2, 12));
cout << (Model_str.substr(2, 12)) << endl; //output = 0.999999
convert1>>vertex1[VertexCounter];
cout << vertex1[VertexCounter] << endl; //output = 0
将它放入我的数组时,有没有理由将它精确到小数点后6位?
答案 0 :(得分:2)
当您使用int
从流中提取>>
时,只要有可以被视为int
一部分的字符,就会读取该int
。整数不允许小数部分,因此0
值中没有小数点。它从流中读取vertex1
,将其存储在您的vertex1
数组元素中(假设int
是float
的数组),并将剩余的字符留在输入缓冲区中以供稍后阅读操作使用。
如果要从流中读取浮点字符串,至少需要读入支持浮点值的类型,例如double
或{{1}}。您是否获得了预期的精确值是另一回事。您选择的目标类型可能无法表示您想要的确切值。