我想在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〜^
答案 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"