2014-08-30 65 views
1

我想从std :: string解析浮点值,其中小数点分隔符是“。”。我如何在分隔符是“,”的语言环境中解析这些浮点数?我使用std :: stringstream。澄清:如何强制使用stringstream进行en-US风格的float分析?从不同语言环境中的字符串解析浮点数

setlocale(LC_NUMERIC, "C"); 

或单个流:

+0

你能够使用C++ 11吗?另外,你的意思是你想用'',''或''。'作为分隔符来解析浮点数,还是两者都是?好像你说了两件不同的事情...... – therealrootuser 2014-08-30 06:23:10

+0

我使用的是C++ 11,而我的浮动字符串只包含“。”。 – SurvivalMachine 2014-08-30 06:29:45

+0

啊,所以你的本地通常使用','分隔符,但是现在除了逗号之外,你还需要能够处理'''分隔符? – therealrootuser 2014-08-30 06:34:52

回答

0

可以这样设置地点为您的整个程序,基本的“C”一个

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

这会给你一个“老派,“非i18n解析和打印。您也可以尝试其他语言环境名称,但保证在所有系统上都可用的那两个是“”和“C”,并且看起来后者适用于您的情况。