ホームページ  >  記事  >  バックエンド開発  >  Windows で UTF-8 文字列を「std::cout」に正しく出力するにはどうすればよいですか?

Windows で UTF-8 文字列を「std::cout」に正しく出力するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-31 07:36:01338ブラウズ

How to Output UTF-8 Strings Correctly to `std::cout` on Windows?

Windows 上の C での UTF-8 文字列の処理

文字列を UTF-8 でエンコードすることは、クロスプラットフォーム アプリケーションで広く使用されています。ただし、Windows で UTF-8 文字列を std::cout に出力するには、特有の課題があります。

Windows のデフォルトの動作では、std::cout は非 Unicode 形式の文字列を期待します。 UTF-8 文字列が表示されると、破損した文字が表示されます。

この問題に対処するには、主に 2 つの手順があります:

  1. コンソール コード ページを UTF-8 に設定する: SetConsoleOutputCP 関数を使用して、受信バイト ストリームが UTF-8 でエンコードされていることをコンソールに通知します。
  2. ストリーム バッファリングを有効にする: Visual の std::basic_filebuf のデフォルト動作を無効にします。 Studio。UTF-8 バイト シーケンスを分解し、個々のバイトとして渡します。これを克服するために、setvbuf はストリーム バッファリングを有効にし、文字列全体が全体として渡されるようにします。

これらの解決策を組み込んだ改訂されたコード スニペットを次に示します。

さらにこれらの手順では、Windows コンソールのラスター フォントでは非 ASCII Unicode 文字が正しく表示されない可能性があることに注意してください。適切なレンダリングを有効にするには、Windows 10 以降のバージョンのデフォルトとなっている TrueType フォントに切り替えることをお勧めします。

以上がWindows で UTF-8 文字列を「std::cout」に正しく出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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