c++ - 在 C++ 中使用 std::istringsteam 将字符串转换为 float

标签 c++ string floating-point

我一直在尝试将一个简单的字符串转换为 float ,但我没有成功。这就是我目前所拥有的:

int main()
{
    float value;
    std::string stringNum = "0.5";
    std::istringstream(stringNum) >> value;

    return 0
}

但我收到此错误:

Error   2   error C2440: '<function-style-cast>' : cannot convert from 'std::string' to 'std::istringstream'    c:\users\administrator\desktop\Test\main.cpp    12

任何人都可以在这里给我一些关于如何简单地将字符串转换为 float 的指导吗?

谢谢

最佳答案

很可能您没有包含所有相关 header :

#include <string>
#include <sstream>

这是一个live example显示当包含适当的 header 时您的代码可以编译。

一般来说,您不应该依赖于从另一个标准头文件间接包含必要的标准头文件(当然,除非该包含记录在标准本身中)。

另请注意,您正在创建一个临时字符串流,该字符串流将在表达式求值结束时被销毁

std::istringstream(stringNum) >> value

您可能想以这种方式创建流对象:

std::istringstream ss(stringNum);
ss >> value;

// Here you can use ss again...

关于c++ - 在 C++ 中使用 std::istringsteam 将字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089337/

相关文章:

string - Dart:在赋值中使用 * 运算符时会分配多少个字符串对象?

c - 如何显示浮点值的编码

java - 什么是与 Math.floorMod() 完全相同但使用 float 而不是整数的方法?

c++ - 将 cos 和 sin 存储到 vector 中并获得奇怪的值

c++ - 无限 while 循环和 for 循环有什么区别?

c++ - AVR-GCC 未将 C++ 与汇编函数链接

c++ - 具有公共(public)访问权限的成员指针的前向声明

java - 合并两个相对文件 URL

arrays - 编码/十六进制 : invalid byte: U+0068 'h' Golang

c++ - 使用 DispEventAdvise 注册多个对象的事件