如何将字符串转换为在cpp中浮动

时间:2019-04-11 11:26:55

标签: c++

我想将字符串转换为浮点型。我使用了函数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);

这不适用于零。 我该怎么办,这将为零工作? 谢谢。

1 个答案:

答案 0 :(得分:2)

如果可以访问C ++ 11,请使用std::stod进行此类操作。

否则请按以下方式使用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

我建议的两种方法以两种不同的方式处理这种情况:

  1. stod引发您可以捕获的异常
  2. sstream设置一个标志,您可以使用bool ss.good()进行查询。 good将在转换成功后返回true,否则返回false。