4

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::coutNcurses では動作するのに動作しないのはなぜprintw(char[])ですか?

を使用してコンパイルします

g++ Main.cpp -lncurses

64 ビット マシンの場合。Ubuntu (64 ビットも) は、OSX をホストとして VirtualBox で実行されています。


更新

https://stackoverflow.com/a/9927113/555690にリダイレクトされました。そこの解決策は私の問題を解決していないようです - 代わりに、これは現在の様子です:

(Mb~X~^M-oM->~ Mc~CM-.M-oM->~ )Mb~X~^

4

1 に答える 1

6

私はこれを答えとして投稿すると思います。そのため、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"

于 2013-10-15T12:09:48.193 に答える