第二节 · 可供理解的数据 · 字符串库
在计算机的世界里,文字是以字符的形式存储的。我们已经见过 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