C/C ++コンソールアプリケーションで通常、複数のバイト文字を出力する方法は?

StackOverflow https://stackoverflow.com/questions/3860985

質問

printf("%s\n", multibytestring);

デフォルトでは、マルチバイト文字が表示されます ??? コンソールでは、どうすれば修正できますか?

役に立ちましたか?

解決

私はWindowsを推測しており、あなたはワイドキャラクターではなくマルチバイトのキャラクターを意味します。

それを確認してください _MBCS 定義されています。電話してみてください setlocale その後 _setmbcp:

setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);

その後、うまくいけばうまくいくはずです。

他のヒント

ワイドキャラクター文字列には「%LS」が必要です。それはあなたが望んでいるものですか?

これがより完全な答えです:

  • WPRINTFを使用して、「%S」を使用してデフォルトで16ビット文字列を出力できます
  • 「%LS」または「%HS」を使用して、PrintFバリアントに関係なく、個々の引数のChar/文字列幅を明示的に指定できます
  • 見る: http://msdn.microsoft.com/en-us/library/56e442dc.aspx MSの参照ドキュメントの場合

UTF8文字が正しく表示されていないことについて尋ねている場合、それはおそらくプラットフォーム固有です(コンソールのコードページ/ハンドリングに依存します)。 UTF8をASCIIとして出力できるはずですが、ディスプレイはUTF8を正しく処理できる必要があり、適切なコーデップまたはその他の環境設定を設定する必要がある場合があります(これについてはわかりませんが、アプリ/プラットフォーム固有だと思います。 )。

これを試して:

wprintf("%s\n", multibytestring);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top