0

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

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”吗?

4

1 回答 1

7

该函数是区域设置感知的,因此它将根据您当前的区域设置解析数字。

由于atof是 C 库的一部分,您必须使用 C 库来更改设置。退房clocale

另请查看 C++ ,如果您使用 C++ 功能 ( , ) 来解析数据locale,则应该使用它。您可以将语言环境设置为流,这样就不会像 C 那样修改全局语言环境。stringistringstreamimbue

于 2012-06-22T11:33:30.140 回答