尝试使用Glibmm-2.4输出中文将返回“转换输入中无效的字节序列”。
#include <iostream>
#include <glibmm/ustring.h>
#include <glibmm/convert.h>
int main()
{
Glib::ustring myUstring = "中";
try
{
std::cout << myUstring;
}
catch(Glib::ConvertError e)
{
std::cout << e.what();
}
return 0;
}
知道我在这里做错了吗?
使用Ubuntu 14.04.2 i386 LTS,g ++,glibmm-2.4
最佳答案
需要语言环境的初始化。 std::locale::global(std::locale(""));
为了使用ustring并使其正确执行流运算符的隐式转换,否则ASCII以外的字符将无法正确转换。
记录在here中