使用cstring.format()中区域设置的小数分离器



我尝试使用当前区域设置的分离器来显示我的号码。

这是我的代码:

Cstring result;    
Cstring myMeasure;  
myMeasure.Format(_T("%.6f %s"), myDouble, myUnit));
result.Format("My volume is: %s", myMeasure);

结果等于"我的音量为:4.565600 ml"。但是使用法国区域设置,结果仍然相同(而法国小数分离器是逗号而不是时期)。

我尝试了setLocale()方法不可否认。

char* originalCulture = setlocale(LC_ALL, NULL); // save original culture
setlocale(LC_ALL,"");
Cstring result;    
Cstring myMeasure;  
myMeasure.Format(_T("%.6f %s"), myDouble, myUnit));
result.Format("My volume is: %s", myMeasure);
setlocale(LC_ALL, originalCulture); // restore original culture

有人可以帮助我吗?

您应该在执行其他任何操作之前调用setlocale(LC_ALL, "")setlocale(LC_ALL, "your_locale")。前者设置了操作系统的默认场所,后者设置了一个特定的语言环境。还要考虑检查此MSDN文章以获取有关setlocale的其他信息。

最新更新