12

C++ が私のプロジェクトに適した言語かどうかを調べるために、UTF-8 の機能をテストしたいと思います。参考文献によると、この例を作成しました:

#include <string>
#include <iostream>

using namespace std;

int main() {
    wstring str;
    while(getline(wcin, str)) {
        wcout << str << endl;
        if(str.empty()) break;
    }

    return 0;
}

しかし、UTF-8 文字を入力すると、誤動作します。

$ > ./utf8 
Hello
Hello
für
f
$ >

を印刷しないだけでなくü、すぐに終了します。gdb墜落ではなく、通常の出口だったと言われましたが、信じがたいと思います。

4

3 に答える 3

10

Linuxではwstringを使用しないでください。

std :: wstring VS std :: string

最初の答えを見てください。それがあなたの質問に答えると確信しています。

  1. std::stringよりもstd::wstringを使用する必要があるのはいつですか?

Linuxでは?ほとんどは決してない (§)。

Windowsでは?ほとんどいつも (§)。

于 2011-12-14T23:55:38.053 に答える
4

メインプログラムの起動時に、「C」ロケールがデフォルトとして選択されていることに注意してください。utf-8を処理する場合は、おそらくこれは望ましくありません。呼び出すsetlocale(LC_CTYPE, "")とこのデフォルトがオフになり、環境で定義されているもの(おそらくutf-8ロケール)が取得されます。

于 2012-02-26T11:38:44.257 に答える