我想将字符串转换为浮点型。我使用了函数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);
这不适用于零。 我该怎么办,这将为零工作? 谢谢。
答案 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
。
我建议的两种方法以两种不同的方式处理这种情况:
stod
引发您可以捕获的异常sstream
设置一个标志,您可以使用bool ss.good()
进行查询。 good
将在转换成功后返回true,否则返回false。