如何用Ncurses打印(☞゚ヮ゚)☞?

时间:2013-10-15 03:53:26

标签: c++ ubuntu terminal ncurses curses

我想在Ubuntu中使用C ++在Ncurses库中打印(☞゚ヮ゚)☞。

首先,您可以通过以下方式完成此操作:

std::cout << "(☞゚ヮ゚)☞" << std::endl;

它运作得很好。

但是,使用Ncurses打印时,我认为您需要使用printw(char[])。在这种情况下,我尝试这样的事情:

std::string str = "(☞゚ヮ゚)☞";   // String
initscr();                     // Start curses mode
printw(str.c_str());           // Print
getch();                       // Wait for input
endwin();                      // Exit curses mode

但它输出:

  

(〜X〜^〜〜C〜)〜X〜^

我原以为可能是c_str()的错,但是当我用std::cout做错时,它的效果也很好。

如何使用Ncurses打印该文本?为什么它适用于std::cout而不适用于Ncurses'printw(char[])

我使用

进行编译
g++ Main.cpp -lncurses

在64位计算机中。 Ubuntu(64位)也在VirtualBox中运行,OSX作为主机。


更新

我被重定向到https://stackoverflow.com/a/9927113/555690。那里的解决方案似乎没有解决我的问题 - 相反,这就是它现在的样子:

  

(M-B〜X〜^ M-OM-&GT;〜 M-C〜CM-.M-OM-&GT;〜)M-B〜X〜^

1 个答案:

答案 0 :(得分:2)

我想我会将此作为答案发布。因此,Ubuntu显然不会默认使用Unicode支持版本。所以你首先需要用

安装它
sudo apt-get install libncursesw5-dev

然后你可以编译这个

#include <iostream>
#include <string>
#include "locale.h"
#include "ncursesw/ncurses.h"
using namespace std;

int main()
{
    setlocale(LC_ALL, "");
    std::string str = "(☞゚ヮ゚)☞";   // String
    initscr();                     // Start curses mode
    printw(str.c_str());           // Print
    getch();                       // Wait for input
    endwin();  
    return 0;
}

它会毫无障碍地工作。

注意#include "ncursesw/ncurses.h"