【问题标题】:Use decimal separator from Regional Settings in CString.Format()在 CString.Format() 中使用区域设置中的小数点分隔符
【发布时间】:2017-05-05 19:12:27
【问题描述】:

我尝试使用当前区域设置中的分隔符显示我的号码。

这是我的代码:

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

有人可以帮我吗?

【问题讨论】:

    标签: c++ localization decimal-point


    【解决方案1】:

    在应用区域设置之前,您应该调用setlocale(LC_ALL, "")setlocale(LC_ALL, "your_locale")。前者设置操作系统的默认语言环境,后者设置特定的语言环境。还可以考虑查看this MSDN article 以获取有关setlocale 的更多信息。

    【讨论】:

    • 我已经阅读了这篇 MSDN 文章,但它对十进制没有帮助。我需要一个特定的格式 _T("%.6f %s")。也许正是这种特定的格式强加了句号?
    猜你喜欢
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多