ホームページ >バックエンド開発 >C++ >cout を使用すると、wchar_t 文字列が文字ではなく 16 進値として出力されるのはなぜですか?

cout を使用すると、wchar_t 文字列が文字ではなく 16 進値として出力されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 15:43:03194ブラウズ

Why are wchar_t strings printed as hex values instead of characters when using cout?

コンソールへの wchar_t 値の出力

コード内で、標準出力ストリーム (コウト)。ただし、これにより、実際の文字の代わりに 16 進値が出力されます。 wchar_t 文字列を正しく出力するには、代わりにワイド文字出力ストリーム (wcout) を使用する必要があります。

指定した例を考えてみましょう。

#include <iostream>

using namespace std;

int main() {
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"Привет"; // Russian language
    cout << ru << endl << en; // Prints hex values
    return 0;
}

wchar_t 文字列を正しく出力するには、cout を置き換えます。 wcout:

...
    wcout << ru << endl << en; // Prints actual characters
...

この変更により、プログラムはロシア語の文字を出力します。予想通り「Привет」と「こんにちは」。デフォルトのロケールでは、wchar_t 文字列内のすべての文字がサポートされていない可能性があるため、一部の文字が正しく表示されない可能性があることに注意してください。

以上がcout を使用すると、wchar_t 文字列が文字ではなく 16 進値として出力されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。