■環境
IDE:Windows Server 2017
言語:C++
ビルド形式:Unicodeビルド
■概要
以前も質問させて頂いた内容に関連しますが。。。
以下の記述で、コマンドプロンプトに出力を行っています。
srvNameに格納したunicode文字(サロゲート文字)が表示されないのは、コマンドプロンプトの文字設定上、UTF16を指定できないためであることは承知しています。
しかし、それ以降の日本語「'は登録完了です。\n」まで表示されなくなる理由がわかりません。
なお、ASCII文字をsrvNameに格納した場合は、正常に「'は登録完了です。\n」は表示されます。
●ソースコード
CString srvName = L"????" _tsetlocale(LC_ALL, _T("")); _tprintf(L"サーバ'" + srvName + L"'は登録完了です。\n");
●コマンドプロンプト
サーバ'
CString srvName = L"????" だとどうなりますか?
文字コードが変わっています。そのままコピペしてください。
フォーマット演算子%lsを3つ用意し、カンマで後ろに変数を3つ用意したところ、Zuishin様がおっしゃる通り、「変換できない文字は '?' で表示され」、他の日本語文字は正常に出力されました。ありがとうございます。
回答2件
あなたの回答
tips
プレビュー