【发布时间】:2020-11-22 13:28:07
【问题描述】:
关于this question,为什么十六进制值的user defined literal 映射到与字符串不同的字符串文字运算符?也就是为什么代码
std::vector<uint8_t> val1 = 0x229597354972973aabbe7_hexvec;
映射到
std::vector<uint8_t> operator"" _hexvec(const char*str)
{
// Handles the form 0xFFaaBB_hexvec and 0Xf_hexvec
size_t len = strlen(str);
return convertHexToVec(str, len);
}
代码
std::vector<uint8_t> val2 = "229597354972973aabbe7"_hexvec;
映射到
std::vector<uint8_t> operator"" _hexvec(const char*str, std::size_t len)
{
// Handles the conversion form "0xFFAABB"_hexvec or "12441AA"_hexvec
return convertHexToVec(str, len);
}
当size_t 都是空终端字符串时,是什么让它们变得必要?就此而言,为什么 0x551A_hexvec 根本是一个字符串?为什么不是整数?
【问题讨论】:
标签: c++ c++11 user-defined-literals