更改字符串语言环境
我对语言环境特定的转换不是很熟悉,所以我可能会在此处使用错误的术语。这是我想要发生的事情。更改字符串语言环境
我想编写一个函数
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;
}
应该给你的1,01
输出(至少它在G ++)。您可能不得不摆弄语言环境规范,因为它非常特定于平台。
+1用于提及语言环境的平台特定性质。 – 2009-12-31 17:45:30
谢谢杰夫,这对VS2008的数字值技巧。我不得不像你说的那样摆弄语言环境规范;我唯一可以工作的是 std :: locale(“french_france”) 无论如何,这个解决方案只适用于数值数据。如果我的输入字符串是“我的体重是200.5磅”而我希望输出是“我的体重是200.5磅”?这可能吗? – Praetorian 2009-12-31 18:10:43
那么,200.5是一个数字吧?或者我误解了你的问题? – 2009-12-31 18:22:26
没有“字符串区域设置”这样的东西。语言环境是一组反映用户语言和文化的格式规则和其他参数。一个字符串是一系列字符。从其他数据中创建字符串时,可以使用区域设置。一旦创建,就没有与之关联的区域设置。 – 2016-10-06 12:37:56