Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更改字符串区域设置_C++_String_Stl - Fatal编程技术网

C++ 更改字符串区域设置

C++ 更改字符串区域设置,c++,string,stl,C++,String,Stl,我不太熟悉特定于语言环境的转换,因此我可能在这里使用了错误的术语。这就是我希望发生的事情 我想写一个函数 std::string changeLocale( const std::string& str, const std::locale& loc ) 这样,如果我按如下方式调用此函数: changeLocale( std::string( "1.01" ), std::locale( "french_france" ) ) 输出字符串将为“1,01” 谢谢你的帮助 像这样

我不太熟悉特定于语言环境的转换,因此我可能在这里使用了错误的术语。这就是我希望发生的事情

我想写一个函数

std::string changeLocale( const std::string& str, const std::locale& loc )
这样,如果我按如下方式调用此函数:

changeLocale( std::string( "1.01" ), std::locale( "french_france" ) )
输出字符串将为“1,01”


谢谢你的帮助

像这样的事情应该能奏效

#include <iostream>
#include <sstream>
#include <locale>
int main (int argc,char** argv) {
    std::stringstream ss;
    ss.imbue(std::locale("fr_FR.UTF8"));
    double value = 1.01; 
    ss << value; 
    std::cout << ss.str() << std::endl; 
    return 0;
}             
#包括
#包括
#包括
int main(int argc,字符**argv){
std::stringstream-ss;
ss.imbue(标准::语言环境(“fr_fr.UTF8”);
双值=1.01;

ss感谢Jeff,这在VS2008上实现了数字值的技巧。我确实必须像你所说的那样修改区域设置规范;我唯一能做的就是使用std::locale(“french_france”),无论如何,这个解决方案只适用于数字数据。如果我的输入字符串是“我重200.5磅”,我希望输出是“我的体重是200,5磅”?这可能吗?200.5这个数字太对了?还是我误解了你的问题?我的意思是问我如何处理字符串输入。例如,以下内容不起作用:stringstream ss;ss.imbue(locale(“french_france”);string s(“我的体重是200.5磅”);ss我想在这方面提供帮助,但却发现std::locale在Mac OS X上遭到了严重破坏:它只接受区域名称“C”和“POSIX”。这似乎至少在10.4到10.6之间是正确的。您仍然可以获取当前区域并覆盖各种特性;但是,您无法加载预定义的区域设置,如“fr_fr”“@praetorian:如果数字在一个字符串中混淆,那么我认为唯一的选择是将字符串拆开,获取数字,格式化,然后重新组合。没有“字符串区域设置”这样的东西。”。区域设置是一组格式规则和其他参数,反映用户的语言和文化。字符串是一个字符序列。使用其他数据创建字符串时,可以使用区域设置。一旦创建了区域设置,就没有与之关联的区域设置。