2014-08-30 4 views
1

Я хочу проанализировать значение с плавающей запятой из std :: string, где десятичный разделитель - «.». Как разобрать такие поплавки в локалях, где разделитель «,»? Я использую std :: stringstream. Чтобы прояснить: Как заставить синтаксический анализ float в стиле US-US со строковым потоком?Разбор поплавка из строки в разных локалях

+0

Можете ли вы использовать C++ 11? Кроме того, вы имеете в виду, что вы хотите анализировать поплавки с помощью ',' или '.' в качестве разделителя или обоих? Казалось, вы сказали две разные вещи: – therealrootuser

+0

Я использую C++ 11, а мои строки с плавающей запятой содержат только «.». – SurvivalMachine

+0

Ах, поэтому ваша местность обычно использует разделитель ',', но теперь вам нужно иметь возможность обрабатывать разделитель '.' в дополнение к запятой? – therealrootuser

ответ

0

Вы можете установить локаль для всей вашей программы к основному «C» один этот путь:

setlocale(LC_NUMERIC, "C"); 

Или для одного потока:

std::locale c_locale("C"); 
my_stream.imbue(c_locale); 

Это даст вам «старой школы , "синтаксический анализ и печать не-i18n. Вы также можете попробовать другие имена локалей, но две из них, которые, как гарантируется, будут доступны во всех системах, это «» и «C», и похоже, что последнее работает для вашего дела.

Смежные вопросы