我的问题如下。我尝试将字符串转换为双精度。这样:
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”吗?
该函数是区域设置感知的,因此它将根据您当前的区域设置解析数字。
由于atof
是 C 库的一部分,您必须使用 C 库来更改设置。退房clocale
。
另请查看 C++ ,如果您使用 C++ 功能 ( , ) 来解析数据locale
,则应该使用它。您可以将语言环境设置为流,这样就不会像 C 那样修改全局语言环境。string
istringstream
imbue