Modern C++ 字面量一网打尽
在现代编程中, 代码的可读性和类型安全变得越来越重要. C++ 自 C++11 开始引入了一系列新特性, 使开发者能够以更加直观的方式表示数据, 从而减少隐式转换错误并提升代码可维护性.
环境要求
本文中的代码需要编译器支持 C++23 标准才能通过.
数值
二进制、八进制、十六进制字面量
单引号作为数值分隔符
C++14 引入了单引号作为数值分隔符,可以提高可读性.
修饰存储类型
为什么引入z
和uz
?
C++23 引入了z
和uz
修饰符, 用于带符号的size_t
类型, 解决有符号数与无符号数比较的警告问题.
浮点数字面量修饰符:
科学计数法
字符字面量
字符串字面量
原始字符串字面量
对于多行字符串, 可以使用原始字符串字面量, 这样就不需要转义字符了.
std::string
字面量
C++14 引入了std::string
字面量, 可以直接使用字符串字面量初始化std::string
对象.
utf-8 字符串字面量
C++17 引入了utf-8
字符串字面量, 可以直接使用utf-8
字符串字面量初始化std::string
对象.
其他字面量
布尔字面量
空指针字面量
用户定义的字面量(User-Defined Literals, UDL)
C++11 引入了用户定义的字面量(User-Defined Literals, UDL), 允许程序员为自定义类型定义自己的字面量表示. 这通过定义一个字面量运算符实现, 运算符以 _
开头, 后跟一个或多个字符. 用户定义字面量仅支持以下基础类型: int
, unsigned int
, long
, unsigned long
, float
, double
, long double
, char
, const char*
.
以下是一个简单的例子,定义一个用于表示长度的用户定义字面量:
结论与展望
现代 C++ 的字面量特性让开发者能够更加自然、直观地表示数据, 并提供了丰富的扩展能力. 结合用户定义字面量, 开发者可以将其应用到科学计算、图形编程、国际化支持等场景, 进一步提升代码的可读性和维护性.
源码
完整的样例在这里.