Logo
Section 1 / 10

简介

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

导入

简介

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

字符串(string)是一系列字符的序列。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// string versus vector 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 std::string firstName= std::string(name.begin(), strIt); 12 std::string lastName= std::string(strIt, name.end()); 13}

字符串是类模板,其参数包括字符类型、字符特性(trait)和分配器(allocator)。其中字符特性和分配器具有默认值。

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

C++ 为不同字符类型提供了对应的字符串别名:

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,即 std::string。

数值函数与随机数

创建与删除