C++自定义字面量(operator"")
下面举个c++内部的字面量用的例子:
unsigned int v1 = 20U; long v2 = 30L; unsigned long v3 = 40UL;
是不是很好奇数字后面 U、L、UL。
在举个栗子实现字面量方法:
在c++11引用了新的标准:用户自定义字面量,也交自定义后缀名操作符。
#include <vector> #include <string> long double operator"" mm(long double x) { return x / 1000; } long double operator"" _m(long double x) { return x; } long double operator"" _km(long double x) { return x * 1000; } int operator"" S(unsigned long long a) { return (int)a; } std::vector<std::string> operator"" _S(const char* pData, size_t nSize) { //对字符串进行切割 std::string data = pData; std::vector<std::string> valueList; std::string::size_type pos1 = 0; std::string::size_type pos2 = data.find(';'); while (std::string::npos != pos2) { valueList.push_back(data.substr(pos1, pos2 - pos1)); pos1 = pos2 + 1; pos2 = data.find(';', pos1); } valueList.push_back(data.substr(pos1)); return valueList; }
错误定义字面量:
int operator"" A(double a) { return (int)a; } //编译器错误
注意:字面量传值类型包括:const char*、long double、unsigned long long
本文来自博客园,作者:一夜梦想,转载请注明原文链接:https://www.cnblogs.com/caiyingyong/p/16924387.html