考虑以下简单的用户定义的原始文字运算符:
#include <string>
std::string operator""_s(const char* s) {
return s;
}
这为我们提供了另一种更简单的方法来生成仅包含整数字符的 std::string
:auto s1 = 012345_s; // s1 is "0123456"s
auto s2 = 0_s; // s2 is "0"s
但是是否可以使用这个原始文字运算符生成 空 字符串?auto s3 = ???_s; // s3 is ""s
最佳答案
单参数形式 T operator""_s(const char* s)
只是整数和浮点类型的后备情况。
处理用户定义的字符串文字的正确方法是通过 T operator""_s(const CharT* s, size_t sz)
.
#include <string>
std::string operator""_s(const char* s) {
return s;
}
std::string operator""_s(const char* s, size_t sz) {
return {s,sz};
}
int main()
{
auto s1 = 012345_s;
auto s2 = 0_s;
auto s3 = ""_s;
}
https://godbolt.org/z/qYM1WaKrh
关于c++ - 可以将空字符串文字传递给用户定义的原始文字运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66778370/