C++ String to Int 使用 StringStream 不准确

标签 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 位是有原因的吗?

最佳答案

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

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

关于C++ String to Int 使用 StringStream 不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11161722/

相关文章:

c++ - 1 字节整数数据类型

c++ - OpenGL GL_UNPACK_ALIGNMENT

.net - 是否可以使用 NBuilder 来构建随机字符串的集合?

c++ - 关于在循环中使用 ifstream 的错误

python - 在 Python 中将 Linux 命令作为原始字符串

c - 用c从字符串中删除一些空格

C++:大型无符号整数的编译器警告

java - 从字符串中收集字符并将其转换为整数

c++ - 删除CUDA依赖项?

c++ - C++ 静态变量总是在主线程上被破坏吗?