C/C++黑魔法-字符串字面量

字符串字面量(string literal)是指双引号引住的字符,双引号中可以没有字符,也可以有很多个字符。使用字符串字面量可以快速得到需要的一些编码字符。

1. 字面量列表

语法 示例 解释
“(未转义字符|转义字符)” “示例” 窄多字节字符串字面量
L"(未转义字符|转义字符)" L"示例" 宽字符串字面量,
为了支持汉语等语言。
u8"(未转义字符|转义字符)" u8"示例" UTF-8 编码的字符串字面量。
(C++11起新增)
u"(未转义字符|转义字符)" u"示例" UTF-16 编码的字符串字面量。
(C++11起新增)
U"(未转义字符|转义字符)" U"示例" UTF-32 编码的字符串字面量。
(C++11起新增)
前缀(可选)R"分隔符(原始字符)分隔符" R"prefix(示例)prefix"
或R"(示例)"
原始字符串字面量。
(C++11起新增)

2. 关于L"..."字面量

  • 类型: const wchar_t[N],其中N是执行范围编码的代码单元中的字符串大小,包括空终止符。

3. 关于R"..."字面量

  • R为原始字符串字面量,用于避免转义任何字符。该字面量分隔符间的任何内容都成为字符串的一部分。
  • 例子:
#include 
int main(int argc, char *argv[])
{
    const char *longString = R"(
    This is
    a very
    long
    string.
    )";

    std::cout<<"====="<<std::endl;
    std::cout<<longString<<std::endl;
    std::cout<<"====="<<std::endl;

    return 0;
}
  • 输出:
=====

    This is
    a very
    long
    string.
    
=====
  • 由于R"(的后面与)"的前面都使用了换行,所以输出两个空换行。

4. 参考内容

https://en.cppreference.com/w/cpp/language/string_literal

你可能感兴趣的:(C/C++黑魔法,C/C++黑魔法)