在 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/