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

Gab*_*ros 0 c++ atof

我的问题如下.我尝试将字符串转换为double.通过这种方式:

string str = "1.1";
double d = atof(str.c_str());
Run Code Online (Sandbox Code Playgroud)

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

但如果我尝试:

string str = "1,1";
double d = atof(str.c_str());
Run Code Online (Sandbox Code Playgroud)

它返回1.1.

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

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

nha*_*tdh 7

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

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

另请locale参阅C++ ,如果您使用C++功能(string,istringstream)来解析数据,则应该使用它.您可以imbue将语言环境添加到流中,这样就不会像C一样修改全局语言环境.