第二节 · 可供理解的数据 · 字符串库

在计算机的世界里,文字是以字符的形式存储的。我们已经见过 C 风格的字符串——用字符数组来存储:

char str[] = "Hello";

但这种方式有很多不便之处:需要手动管理内存、容易越界、操作繁琐……

C++ 标准库提供了 string 类,让字符串的处理变得简单而安全。


创建字符串

使用 string 类需要包含 <string> 头文件:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s1;                    // 空字符串
    string s2 = "Hello";          // 用字符串字面量初始化
    string s3("World");           // 另一种初始化方式
    string s4(5, 'A');            // 5 个 'A',即 "AAAAA"
    string s5 = s2;               // 复制 s2
    string s6 = s2 + " " + s3;    // 字符串拼接
    
    cout << s6 << endl;  // 输出: Hello World
    
    return 0;
}

字符串的基本操作

at() 方法和下标运算符 [] 都可以访问字符,区别在于 at() 会进行边界检查,越界时会抛出异常。


字符串的拼接

拼接字符串非常简单,直接用 + 运算符即可:


子字符串操作


字符串比较

字符串可以直接用比较运算符进行比较,按字典序(ASCII 码顺序):


字符串与数字的转换

C++11 提供了方便的转换函数:


输入输出

cin >> s 只能读取一个词,遇到空格、制表符或换行符就停止。如果需要读取整行,应该使用 getline()


遍历字符串


实用示例:统计单词数量


C 风格字符串与 string 的转换

有时我们需要在两者之间转换:

c_str() 返回一个以空字符结尾的 C 风格字符串指针,常用于调用需要 C 风格字符串的函数。


string 类是 C++ 中处理文本最常用的工具。熟练掌握它的使用,将大大提高你的编程效率。

习题

  • 编写一个程序,将用户输入的字符串反转输出。

  • 编写一个函数,统计字符串中某个字符出现的次数。

  • 编写一个程序,将用户输入的英文句子中每个单词的首字母转换为大写。

Last updated