1

尝试使用 Glibmm-2.4 输出中文返回“Invalid byte sequence in conversion input”。

#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

4

1 回答 1

0

需要对语言环境进行初始化,例如std::locale::global(std::locale(""));,为了使用 ustring 并让它正确地进行流运算符的隐式转换,否则 ASCII 之外的字符将无法正确转换。

这记录在这里

于 2015-03-10T08:29:17.420 回答