Связанный с Windows вопрос C ++!
Я пытаюсь использовать _tcstod () для анализа строки, чтобы получить значение с плавающей точкой. Обычно, если я позвоню
wchar_t* endPtr;
float result = static_cast<float>(_tcstod( "12.345678", &endPtr));
Я получаю значение с плавающей запятой 12,345678, и endPtr ведет себя как ожидалось. Это на самом деле плохо себя ведет, если я изменю свой региональный десятичный разделитель в настройках Windows Region и Language. В частности, если я изменю десятичный разделитель с «.» to «,», внезапно _tcstod возвращает только значение 12, а не все. Что-нибудь после. отрублен
Есть ли какой-то способ для меня, чтобы разобрать значение с плавающей запятой из строки, не привязываясь к моим настройкам региона?
Почему _tcstod использует мои настройки области Windows при разборе строки?
Потому что так и должно быть.
Есть ли какой-то способ для меня, чтобы разобрать значение с плавающей запятой из строки, не привязываясь к моим настройкам региона?
Конечно. Самый простой способ в C ++ — использовать поток строк и наполнить его языком по умолчанию или «C».
Других решений пока нет …