Jochen Arndt
Библиотека C использует свои собственные настройки локализации и всегда изначально является общей настройкой "C". Чтобы применить те же настройки, что и для текущего пользователя Windows, вызовите
setlocale(LC_ALL, "");
при запуске программы (например, в
InitInstance
для приложений Windows или поверх них
main
для приложений командной строки; требуется включение
язык.ч).
Чтобы установить локаль для библиотеки C++, включите
место действия (без
.ч) и позвонить
std::locale::global(std::locale(""));
Это также установит локаль для библиотеки Си.
Заметим также, что
CString
класс использует библиотеку C для форматирования строк. Таким образом, десятичная точка, установленная вышеприведенными вызовами, также используется при передаче чисел с плавающей запятой в
CString::[Append]Format()
.
Jochen Arndt
Нет,это обычное дело.
Но вы должны знать, что он делает. Если вам нужно, например, прочитать и проанализировать данные из файла, который использует точку в качестве десятичной точки, вам придется снова изменить локаль для этой задачи (или написать функцию, которая заменяет символ точки deciaml).
Jochen Arndt
Это позволит выбрать точку в качестве десятичной точки и будет использоваться по умолчанию при запуске программы.
При использовании atof (и strtod) вам просто нужно убедиться, что локаль соответствует десятичному piunt, используемому в строке.