2017-09-05 90 views
0

我想了解字符串文字和喜歡,我一直在玩它。目前面臨的問題是無法提供一個字符串,該字符串是兩個字符串文字的串聯,後面附加了「字符串」方法。C++ string_literals s postfix不能打印字符串連接這種方式

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

它沒有任何編譯器錯誤,如果我投一個字符串或對字符串構造函數的調用將它們串聯。

我也無法讓wcout實際輸出unicode字符。我在代碼的其他地方使用cout。

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

輸出襯衫,但沒有Unicode字符,當我wcout << surname;如果我只是COUT姓我得到十六進制。


編輯:感謝評論我已經理解了wcout的問題。我沒有意識到它只會與wstring一起工作,並且由於已經閱讀了一些關於不混合我尚未完全理解的兩部分的內容,所以我避免了普通的cout。

我仍然無法在wchar_t *中打印輸出符號,它只輸出普通的ascii字符。

感謝您迄今爲止的迅速回復!


wcout適用於標有u8的標準字符,但沒有其他東西。在襯衫失敗之後,有幾個wcout報表沒有輸出任何內容,我在他們之前將它們移動並打印出來,但它們是十六進制而不是字符。到目前爲止,只有正常的char *已經工作。這是這樣一個頭痛...

+7

'wcout'是寬字符串,'的std :: wstring的只有。 –

+0

*「我也無法讓wcout實際輸出unicode字符。」*:你的shell是否支持unicode? – Jarod42

+0

我在使用visual studio 15的windows 10 2017 – eternalNoob

回答

0

至於沒有Unicode控制檯輸出,您可能需要設置的區域,即:

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

我設置了語言環境,但它仍然不起作用。 IT不僅僅是輸出符號,還會阻止接下來幾個wcout語句的工作。 – eternalNoob