Logo
Section 1 / 12

简介

在本章中,我们将探讨 C++ 中最重要的类之一:字符串。 让我们开始吧!

导入

简介

在本章中,我们将探讨 C++ 中最重要的类之一:字符串。 让我们开始吧!

字符串是一系列字符。C++ 提供了多种方法来分析或修改字符串。C++ 字符串是 C 风格字符串(const char*)的安全替代方案。使用字符串需要包含头文件 <string>。

ℹ️ 字符串与 std::vector 非常相似

字符串类似于一个存储字符的 std::vector。它支持非常类似的接口。这意味着除了字符串类自身的方法外,我们还可以使用标准模板库(STL)的算法来操作字符串。

下面的代码片段中,变量 std::string name 的值为 RainerGrimm。我们使用 STL 算法 std::find_if 找到第一个大写字母,并据此将名字和姓氏分别提取到 firstName 和 lastName 变量中。表达式 name.begin()+1 表明字符串支持随机访问迭代器:

1 2// 字符串与向量的对比 3... 4#include <algorithm> 5#include <string> 6 7std::string name{"RainerGrimm"}; 8auto strIt = std::find_if(name.begin() + 1, name.end(), 9 [](char c) { return std::isupper(c); }); 10if (strIt != name.end()) { 11 firstName = std::string(name.begin(), strIt); 12 lastName = std::string(strIt, name.end()); 13}

字符串是一个以字符类型、字符特性以及分配器为模板参数的类模板。其中字符特性和分配器都有默认值。

1template <typename charT, typename traits = char_traits<charT>, typename Allocator = allocator<charT>> 2class basic_string;

C++ 为 char、wchar_t、char16_t 和 char32_t 这几种字符类型提供了别名。

1typedef basic_string<char> string; 2typedef basic_string<wchar_t> wstring; 3typedef basic_string<char16_t> u16string; 4typedef basic_string<char32_t> u32string;

ℹ️ std::string 就是字符串
在讨论 C++ 中的字符串时,99% 的情况下我们指的是针对字符类型 char 的特化版本 std::basic_string。本课程中也是如此。


在下一课中,我们将讨论如何创建和删除字符串。

迭代器

创建和删除