5

私は一日中ncursesで単純な線画(ボックスなど)を作成しようとしていますが、それを機能させることができません。ここにあるような拡張ASCII文字を印刷しようとしています:http : //www.theasciicode.com.ar/ascii-table-codes/ascii-codes-219.htmlwchar_tへの言及をいくつか見ました。しかし、どうやらncurseswが必要なようです。これを含める方法がわかりません(インストールされていることはわかっています)。

OSX10.6.2およびGCC4.2でXCodeを使用しています。

何か案は?

4

2 に答える 2

5

You don't need wchar_t. The "extended" codes (c. 1985) are less than 255. For example, to draw the left lower corner of a double-lined box, use code 200 decimal, 310 octal ("\310") or 0xc8 ("\xc8").

Those characters need support from the terminal emulator you are using, but it should work fine.


edit
I have a vague memory of a 7-bit vs. 8-bit mode for old curses, but I cannot find any mention of it in the FSF ncurses 1.190 (2008/12/20), also identified as v5.7.3.20090207 which I have on Linux. The man page for curs_addch mentions symbolic constants for line drawing characters, so perhaps you are expected to use those instead of literal line drawing characters:

addch (ACS_ULCORNER);   // upper left corner
for (int j = 0;  j < boxwidth-2;  ++j)
    addch (ACS_HLINE);
addch (ACS_URCORNER);   // upper right
...
于 2010-12-10T00:53:06.573 に答える
1
void boxAround( int y, int x, int h, int w ) {
    move( y, x );
    addch (ACS_ULCORNER);   // upper left corner
    int j;
    for (j = 0;  j < w;  ++j)
        addch (ACS_HLINE);
    addch (ACS_URCORNER);   // upper right

    for( j = 0; j < h; ++j ) {
            move(  y+1+j, x );
            addch (ACS_VLINE);
            move( y+1+j, x+w+1 );
            addch (ACS_VLINE);
    }

    move( y+h+1,x );
    addch (ACS_LLCORNER);   // lower left corner

    for (j = 0;  j < w;  ++j)
        addch (ACS_HLINE);
    addch (ACS_LRCORNER);   // lower right
}
于 2014-07-03T23:08:02.483 に答える