我想将字符串转换为 float 。我使用函数 std::atof,但是当我有一个零字符串时,这不起作用,因为如果成功,std::atof 的返回值是 0。
有些字符串不是数字。
为此,我写了这段代码:
float att_valur_converted;
att_valur_converted = std::atof(m_pAttr->att_value);
if (att_valur_converted != 0.0){
sprintf(m_pAttr->att_value,"%.2f", att_valur_converted);
这不适用于零。
我该怎么做才能使零工作?
谢谢。
使用std::stod
如果您有权访问 C++11,则可以执行此类操作。
否则使用 std::stringstream
如下:
double f = 0.0;
std::stringstream ss;
std::string s = "213.1415";
ss << s;
ss >> f; //f now contains the converted string into a double
cout << f;
当然,在这两种情况下,您都必须处理此类转换可能失败的事实,例如,如果您尝试以“blablabla”作为输入调用 stod
。
我建议的两种方法以两种不同的方式处理这种情况:
stod
抛出一个你可以捕获的异常
sstream
设置一个标志,您可以使用 bool ss.good()
进行查询。 good
如果转换成功则返回 true,否则返回 false。