2017-09-05 7 views
0

文字列リテラルなどについて学びたいと思っています。現在、 "string"メソッドを付加した2つの文字列リテラルの連結である文字列をwcoutできないという問題に直面しています。C++ string_literals s postfix cantの印刷文字列をこのように連結しました

std::string concat = "Hello, "s + "World!";

それは私が文字列にキャストした場合に任意のコンパイルエラーを持っているか、それらを連結した文字列コンストラクタへの呼び出しは行いません。

また、実際にUnicode文字を出力するためにwcoutを取得するのに問題があります。私はコード内のどこかでcoutを使用します。

constexpr wchar_t* surname = L"shirts \u0444 \u1300";

出力のシャツが、なしのUnicode文字とき、私wcout << surname;私は六角を取得し、私はちょうどcoutの姓場合。


編集:コメントありがとう、私はwcoutの問題を理解しています。私はそれがwstringでしか働かないことを理解していませんでした。私はまだ完全に理解していない2つを混合しないことについて何かを読んでいるので、普通の頭痛を避けていました。

まだ普通のASCII文字を出力するwchar_t *でシンボルを表示できません。

これまでの返信いただきありがとうございます!


wcoutは、u8とマークされた通常の文字の場合に機能しますが、他には何も表示されません。いくつかのwcoutステートメントは、シャツが失敗しても何も出力していないので、私はそれらを前に移動して印刷しましたが、期待どおりの文字ではなく16進数でした。今のところ、通常のchar *だけが動作しています。この...

+7

'wcout'は'のstd :: wstringの、ワイド文字列です'sだけ。 –

+0

* "実際にUnicode文字を出力するためにwcoutを取得するのにも問題があります。" *:あなたのシェルはUnicodeをサポートしていますか? – Jarod42

+0

私はビジュアルスタジオを使ってWindows 10にいる15 2017 – eternalNoob

答えて

0

なしUnicodeのコンソール出力用として、あなたはロケールを設定する必要があり、そのような頭痛である、つまり:

std::setlocale(LC_ALL, ""); 
constexpr wchar_t* surname = L"shirts \u0444 \u1300"; 
wcout << surname; 
+0

ロケールを設定してもまだ動作しません。それだけではなく、次のカップルのwcoutステートメントが動作しないようにする記号を出力するのではありません。 – eternalNoob

関連する問題