如何在Linux的ncurses中显示特殊字符?

时间:2012-12-03 02:49:16

标签: linux ncurses

我正在尝试制作一个代码,让Lenny跳跃,但是lenny面对这个:(͡°͜ʖ͡°)

编译时&运行代码(g ++ -o Lenny main.cpp),得到输出“(͡° 〜\ 〜V͡°)”。有没有办法让它显示(͡°͜ʖ͜ʖ°)?

2 个答案:

答案 0 :(得分:0)

您正在处理Unicode字符。您可以使用此库:ICU

查看更多here

答案 1 :(得分:0)

Linux具有良好的Unicode支持,如果您正在输出所有内容,则不需要任何特殊库:

#include <iostream>
int main()
{
    std::cout << "( ͡° ͜ʖ ͡°)\n";
}

在线演示:http://ideone.com/UUS6Il

或者,您不能依赖Linux内置的UTF-8并明确它:

#include <iostream>
#include <locale>
int main()
{
    std::locale::global(std::locale("en_US.utf8"));
    std::wcout.imbue(std::locale());
    std::wcout << L"( ͡° ͜ʖ ͡°)\n";
}

在线演示:http://ideone.com/EhTfB9

编辑:根据您在评论中的代码,您的问题实际上是关于ncurses库I / O,而不是关于C ++。为了使您的程序按预期工作,

  1. setlocale(LC_ALL, "en_US.utf8");的开头附近添加第main()行(并相应地添加#include <clocale>
  2. 将您的链接更改为使用-lncursesw,而不是-lncurses,如果您正在使用的话。