我正在尝试执行以下操作:
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 位是有原因的吗?
最佳答案
当您使用 >>>
从流中提取 int
时,只要存在可被视为 int< 一部分的字符,它就会读取
。整数不允许小数部分,因此 int
值中没有小数点。它从流中读取 0
,将其存储在 vertex1
数组元素中(假设 vertex1
是一个 int
), 并将剩余的字符留在输入缓冲区中以供以后的读取操作使用。
如果要从流中读取浮点字符串,至少需要读入支持浮点值的类型,例如float
或 double
。您是否获得预期的精确值是另一回事。您选择的目标类型可能无法表示您想要的确切值。
关于C++ String to Int 使用 StringStream 不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11161722/