C++11:用户定义字面量

来源:互联网 发布:广州聚焦网络 编辑:程序博客网 时间:2024/06/07 02:10

本文转自:https://www.devbean.net/2012/05/cpp11-literals/

用户自定义字面值,或者叫“自定义后缀”更直观些,主要作用是简化代码的读写。

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 main(){    cout << 1.0_mm << endl; //0.001    cout << 1.0_m  << endl; //1    cout << 1.0_km << endl; //1000    return 0;}

运行结果如下:
这里写图片描述

根据 C++ 11 标准,只有下面参数列表才是合法的:

char const *unsigned long longlong doublechar const *, size_twchar_t const *, size_tchar16_t const *, size_tchar32_t const *, size_t

最后四个对于字符串相当有用,因为第二个参数会自动推断为字符串的长度。例如:

size_t operator"" _len(char const * str, size_t size){    return size;}int main(){    cout << "mike"_len <<endl; //结果为4    return 0;}

运行结果如下:
这里写图片描述

对于参数char const *,应该被称为原始字面量 raw literal 操作符。例如:

char const * operator"" _r(char const* str){    return str;}int main(){    cout << 250_r <<endl; //结果为250    return 0;}

运行结果如下:
这里写图片描述

原创粉丝点击