c++ - 来自 cppreference 的用户定义的 const char* 文字示例

标签 c++ c++11 user-defined-literals

在 cppreference 上有这个例子(http://en.cppreference.com/w/cpp/language/user_literal):

void operator"" _print ( const char* str )
{
    std::cout << str;
}


int main(){
    0x123ABC_print;
}

输出: 0x123ABC

而且我不明白这到底在做什么。首先我认为 0x123ABC 只会被视为一个字符串,但是 0x123ABCHello_print不编译。然后我认为 operator<<重载,所以它总是以十六进制形式打印,但是 123_print版画 123 .它还区分大小写:0x123abC_print版画 0x123abC .

有人能给我解释一下吗?一方面,它只接受整数作为参数,但另一方面,它将它们视为字符串文字。

最佳答案

http://en.cppreference.com/w/cpp/language/user_literal

void operator""_print(const char* str) 说明你的字面量被当成const char* 然后打印出来,这就是区分大小写的原因。

0x123ABCHello_print 不起作用,因为 0x123ABCHello 不是数字,对于用户定义的字符串文字,您需要 "0x123ABCHello"_print

关于c++ - 来自 cppreference 的用户定义的 const char* 文字示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301096/

相关文章:

c++ - 何时以及如何使用模板文字运算符?

c++ - 对字符串使用用户定义的文字而不是字符串文字的优点

c# - Windows 资源管理器 IShellFolderViewDual::SelectItem 用法

c++ - 如何根据不同的专业设置内部模板化类的特定成员?

c++ - 重建仅知道其名称和参数列表的函数的签名

javascript - 如何将字符串值从 C++ 返回到 javascript (windows/Visual studio 2008)?

c++ - 共同的初始序列和比对

c++ - 在 C++ 11 中使用 Homebrew 软件、gcc 和 llvm

c++ - constexpr 变量的唯一地址

c++ - 文字运算符模板 : why not string?