2017-09-05 211 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