c ++控制台应用程序,atof

时间:2012-06-22 11:30:45

标签: c++ atof

我的问题如下。我尝试将字符串转换为double。这样:

string str = "1.1";
double d = atof(str.c_str());

但这不起作用,它只返回1;

但如果我尝试:

string str = "1,1";
double d = atof(str.c_str());

它返回1.1。

这真的很奇怪。似乎只有我写一个“,”它才能理解数字,但返回为“。”。

任何想法我怎么能解决这个转换“1.1”呢?

1 个答案:

答案 0 :(得分:7)

该功能可识别语言环境,因此它将根据您当前的语言环境设置解析数字。

由于atof是C库的一部分,因此您必须使用C库来更改设置。查看clocale

另请参阅C ++ locale,如果您使用C ++功能(stringistringstream)来解析数据,则应使用它。您可以imbue到流的区域设置,这样就不会像C一样修改全局区域设置。