【问题标题】:c++ u8 literal char override时间:2019-01-10 标签:c++u8literalcharoverride
【发布时间】:2016-10-01 16:05:00
【问题描述】:

我尝试覆盖字符文字以使它们成为 char16_twchar_tchar32_tchar通过使用 uULu8 前缀。它适用于除了 u8。见下文:

#include <iostream>
using std::cout; using std::endl;
int main(){
cout<<"\'a\'----"<<'a'<<endl;
cout<<"L \'a\'----"<<L'a'<<endl;
cout<<"u \'a\'----"<<u'a'<<endl;
cout<<"U \'a\'----"<<U'a'<<endl;
//cout<<"u8 \'a\'----"<<u8'a'<<endl;
return 0;
}

控制台输出:

'a'----a
L 'a'----97
u 'a'----97
U 'a'----97

当我取消注释 u8 行时,我收到以下错误:

'u8' was not declared in this scope prog.cpp    

你知道为什么它不起作用吗?

【问题讨论】:

  • 不要发布文字图片,尤其是图片链接(链接可能会过时)。而是将实际文本复制粘贴到问题的正文中。如果您询问构建错误,请也包括构建错误(作为文本,完整,完整且未经编辑)。
  • 好的。谢谢你。我现在要编辑

标签: c++ c++11 utf-8 char


【解决方案1】:

http://www.cplusplus.com/doc/tutorial/constants/

u8 用于字符串文字,而 u、U 和 L 用于字符文字。

在以下行中,您将 u8 前缀添加到字符文字中。 cout

【讨论】:

  • 谢谢。我以为是字符。
【解决方案2】:

u8 字符为C++17 feature。确保您的编译器支持它并且您已启用它。

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多