string类位于 string 头文件的 std 命名空间中。cstring 头文件是C风格字符串库。

4.3.1 C++11字符串初始化

示例:

  1. char data1[] = {"abc"};
  2. char data2[]{"abc"};
  3. string data3 = {"abc"};
  4. string data4{"abc"};

4.3.2 赋值、拼接、附加

使用 string 类的一个好处是:可以将一个 string 对象赋给另一个 string 对象,而数组之间不可以。

可以使用 + 将两个 string 对象合并起来,使用+= 将附加到末尾。

4.3.3 其他操作

  1. //使用 strcpy() 将字符串复制到字符数组中
  2. strcpy(list1, list2);
  3. //使用 strcat() 将字符串附加到字符数组末尾
  4. strcat(list1, list2);

安全函数是 strncpy()、strncat()。

4.3.4 其他形式的字符串字面值

C++使用前缀 L、u、U 表示 wchar_t、char16_t、char32_t:

  1. wchar_t str1[] = L"abc";
  2. char16_t str2[] = u"abc";
  3. char32_t str3[] = U"abc";

C++11新增原始字符串(raw)。在原始字符串中,字符表示是就是自己。例如,\n 表示两个字符:斜杠和 n。另一个例子是,可在字符串中使用 “ 而无需使用繁琐的 \”。示例:

  1. //原始字符串格式
  2. cout << R"Jim "King" Tutt uses "\n" instead of endl." << '\n';
  3. //标准字符串格式
  4. cout << "Jim \"King\" Tutt uses \"\\n\" instead of endl." << '\n';