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:如果数字在一个字符串中混淆,那么我认为唯一的选择是将字符串拆开,获取数字,格式化,然后重新组合。没有“字符串区域设置”这样的东西。”。区域设置是一组格式规则和其他参数,反映用户的语言和文化。字符串是一个字符序列。使用其他数据创建字符串时,可以使用区域设置。一旦创建了区域设置,就没有与之关联的区域设置。