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