2016-07-29 3 views
1

新しいWindows 10ビルド14393を最近インストールしたので、新しいlinuxサブシステムを使いたいと思っていました。だから私はncursesを学ぶことに決めました。のようなアクセントのあるキャラクタのUTF-8コードを、getchからどうやって見つけるかわかりません。だからここ が私のコードです:私はèを押すと、例えばncursesでUTF-8アクセントを使用する方法

#include <iostream> 
#include <string> 
#include <curses.h> 

using namespace std; 

int main(int argc, char **argv) 
{ 
    char ch; 

    setlocale(LC_ALL, "fr_FR.UTF-8"); 

    initscr(); 
    cbreak(); 
    noecho(); 

    printw("èèè\n"); // i can print accents 

    ch = getch(); // if i press è it gives me 2 characters 
    printw("%d", ch); 
    ch = getch(); 
    printw("%d", ch); 

    getch(); // wait for a key to exit 
    endwin(); 

    return 0; 
} 

それは私-61-88ある2つの文字コードを与えるので、どのように私は232あるUTF-8テーブルからそのコードを持つことができますか?

g++ file.cxx -o file -lncursesw 

そして、私のロケールはfr_FR.UTF-8として設定されている:私はここにncursesw使うと は私g++コマンドをコンパイルすることです。 お返事ありがとうございます。

+0

[long story](http://www.unicode.org/reports/tr17/)、短いutf8では、異なるコードポイントを1バイト以上のシーケンスとしてエンコードします。 –

答えて

0

呼び出しは、32ビットのchtype値(charは8ビット文字を返しますが、この場合は問題ありません)を返します。 UTF-8はマルチバイトエンコーディングです。この場合、ncursesは1コールにつき1バイトずつ—を返します。

例えば、get_wchを使用して、ユニコード(ワイド文字)の値を取得するには、

wchar_t ch; 
get_wch(&ch); 

あなたはもちろんget_wchの戻り値をチェックする必要がありますが、その戻り値はOKまたはだろうERR —文字は引数として渡されたポインタを介して返されます。

+0

コンパイルすると 'get_wchがこのスコープで宣言されていません 'と表示されます。別のヘッダファイルをインクルードする必要がありますか? – Aistun

+0

私は '#include 'を見つけました。どうもありがとうございました。 :) – Aistun

+0

あなたは ''を意味すると思います(もう1つはC++バインディング用です)。 –

関連する問題