背景
程序需要从文件中读取double精度的数据。
随着程序的更新,文件也会更新。但有时候,更新了文件,却忘记更新程序,这时启动程序时,就会coredump。
gdb coredump也很容易看出问题,但不能一出问题就让程序crash啊。
于是加了try来catch异常,但是无果,还是dump,于是查了一下,发现了atof的问题。
stod vs atof
atof是c代码里的库函数,用于把字符串转换为double精度的数字,原型如下:
#include <stdlib.h>
double atof (const char* str);
返回值:
- 正常时,该函数返回double精度的浮点数
- 如果不能进行有效地转换,返回0.0
- 如果转换的数值超出了double可以表示的范围,该函数会产生未定义的行为
正常的情况都不用说了,这不正常的情况,似乎也太不正常了。
所以使

本文对比了C语言中的atof函数与C++11中的stod函数在处理字符串转换为double类型时的不同行为,特别是在面对空字符串及异常数据时的表现。

3443

被折叠的 条评论
为什么被折叠?



