Почему _tcstod использует мои настройки области Windows при разборе строки?

Связанный с Windows вопрос C ++!

Я пытаюсь использовать _tcstod () для анализа строки, чтобы получить значение с плавающей точкой. Обычно, если я позвоню

wchar_t* endPtr;
float result = static_cast<float>(_tcstod( "12.345678", &endPtr));

Я получаю значение с плавающей запятой 12,345678, и endPtr ведет себя как ожидалось. Это на самом деле плохо себя ведет, если я изменю свой региональный десятичный разделитель в настройках Windows Region и Language. В частности, если я изменю десятичный разделитель с «.» to «,», внезапно _tcstod возвращает только значение 12, а не все. Что-нибудь после. отрублен

Есть ли какой-то способ для меня, чтобы разобрать значение с плавающей запятой из строки, не привязываясь к моим настройкам региона?

0

Решение

Почему _tcstod использует мои настройки области Windows при разборе строки?

Потому что так и должно быть.

Есть ли какой-то способ для меня, чтобы разобрать значение с плавающей запятой из строки, не привязываясь к моим настройкам региона?

Конечно. Самый простой способ в C ++ — использовать поток строк и наполнить его языком по умолчанию или «C».

0

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

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

По вопросам рекламы [email protected]