使用StringStream的C ++字符串到Int不完全相同

时间:2012-06-22 18:01:50

标签: c++ string int stringstream

我正在尝试执行以下操作:

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位?

1 个答案:

答案 0 :(得分:2)

当您使用int从流中提取>>时,只要有可以被视为int一部分的字符,就会读取该int。整数不允许小数部分,因此0值中没有小数点。它从流中读取vertex1,将其存储在您的vertex1数组元素中(假设intfloat的数组),并将剩余的字符留在输入缓冲区中以供稍后阅读操作使用。

如果要从流中读取浮点字符串,至少需要读入支持浮点值的类型,例如double或{{1}}。您是否获得了预期的精确值是另一回事。您选择的目标类型可能无法表示您想要的确切值。