有没有替代
即:
原因:
atof
、strtod
、lexical_cast
、stringstream
或者sprintf
的方法?即:
- 快速
- C++风格(使用
std::string
而非char*
) - 安全(无缓冲区溢出风险)
- 有效(若转换失败则返回NaN)
- 无需外部库(独立)
原因:
atof
和strtod
是C函数,转换失败时不会返回NaN
。我更喜欢在std::string
上工作,所以我只是想问一下是否已经有人为std::string
编写了包装器,我可以使用(如果您不介意的话)。lexical_cast
有Boost依赖性stringstream
很慢sprintf
存在缓冲区溢出风险且为C函数
atof
封装在一个友好的std::string函数中),那么提出建议也毫无意义。 - tenfourstrtod(string.c_str(), NULL)
和asprintf
可以避免缓冲区溢出问题。公正地说,如果C函数能够解决你的问题,我找不到任何真正好的理由避免在C++中使用它们。 - zneak