1

ここにエラーが発生しました。説明するために、 http://www.endmemo.com/unicode/unicodeconverter.phpに従って→文字を印刷したい

コードは 2192 です。しかし、間違ったコードを使用している可能性があります。正しい印刷方法は何ですか → .

int _tmain(int argc, _TCHAR* argv[])
{
    UINT oldcp = GetConsoleOutputCP();
    SetConsoleOutputCP(CP_UTF8);

    cout<<"\x2192"<<endl;

    SetConsoleOutputCP(oldcp);

    return 0;
}
4

2 に答える 2

1

プラットフォームの 1 文字は 8 ビットです。コード部分"\x2192"は 16 ビットを入れようとします。適合しないものがあるため、警告が表示されます。

"\x21\x92""\x92\x21"?などの複数の文字を意味していた可能性があります。これにより、2 つの文字 (+ 0) を持つ有効な文字列が作成されます。コメントが正しければ、適切な値になるように調整できます。

于 2013-06-18T22:18:12.230 に答える
0

の使用から、あなたは主に Windows に関するものだ_tmainSetConsoleOutputCP思います。残念ながら、私はそれについてあまり知りません。うまくいけば、その特定のケースについてもっと知っている誰かが声をかけてくれるでしょうが、このプログラムは、ここでUTF-8端末で試した簡単なテストで探している出力を生成します. プログラムは次のとおりです。

#include <iostream>

int main(void)
{
    std::cout << "\xE2\x86\x92" << std::endl;
    return 0;
}

出力例:

$ make example && ./example
c++     example.cpp   -o example
→

→ 文字の UTF-8 エンコーディングを直接出力するだけです。

同様に(少なくともclangの場合):

#include <iostream>

int main(void)
{
    std::cout << "→" << std::endl;
    return 0;
}
于 2013-06-18T22:05:20.597 に答える