Используйте десятичный разделитель из региональных настроек в CString.Format ()

Я пытаюсь отобразить свой номер, используя разделитель из моих текущих региональных настроек.

Вот мой код:

Cstring result;
Cstring myMeasure;

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

Результат равен, например, «Мой объем: 4,565600 мл».
Но при использовании французских региональных настроек результат остается тем же (тогда как французский десятичный разделитель — запятая, а не точка).

Я попытался метод 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

Может ли кто-нибудь помочь мне в этом?

3

Решение

Вам следует позвонить setlocale(LC_ALL, "") или же setlocale(LC_ALL, "your_locale") прежде чем делать что-либо еще, чтобы применить локаль. Первый устанавливает языковой стандарт по умолчанию для операционной системы, второй устанавливает конкретный языковой стандарт. Также рассмотрите проверку эта статья MSDN для дополнительной информации о setlocale,

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector