C++ 字符串完全指南:学习基础知识到掌握高级应用技巧

C++ 字符串

字符串用于存储文本。

一个字符串变量包含由双引号括起来的一组字符:

示例

创建一个 string 类型的变量并为其赋值:

cpp 复制代码
string greeting = "Hello";

C++ 字符串连接

字符串连接可以使用 + 运算符来实现,生成一个新的字符串。

示例:

cpp 复制代码
string firstName = "John ";
string lastName = "Doe";
string fullName = firstName + lastName;
cout << fullName;

在上面的示例中,我们在 firstName 后面添加了一个空格,以便在输出时在 "John" 和 "Doe" 之间生成一个空格。然而,你也可以用引号(" "' ') 来添加一个空格:

示例:

cpp 复制代码
string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName;
cout << fullName;

追加:

在 C++ 中,字符串实际上是一个对象,其中包含可以对字符串执行某些操作的函数。例如,你也可以使用 append() 函数连接字符串:

示例:

cpp 复制代码
string firstName = "John ";
string lastName = "Doe";
string fullName = firstName.append(lastName);
cout << fullName;

C++ 数字和字符串

将数字和字符串相加

C++ 使用 + 运算符既用于加法又用于连接。

  • 数字相加。字符串连接。

如果你将两个数字相加,结果将是一个数字:

示例:

cpp 复制代码
int x = 10;
int y = 20;
int z = x + y;      // z 将是 30(一个整数)

如果你将两个字符串相加,结果将是字符串连接:

示例:

cpp 复制代码
string x = "10";
string y = "20";
string z = x + y;   // z 将是 1020(一个字符串)

如果你尝试将一个数字添加到一个字符串中,将会出现错误:

示例:

cpp 复制代码
string x = "10";
int y = 20;
string z = x + y;

C++ 字符串长度

要获取字符串的长度,可以使用 length() 函数:

示例

cpp 复制代码
string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << "txt 字符串的长度为: " << txt.length();

提示:你可能会看到一些 C++ 程序使用 size() 函数来获取字符串的长度。这只是 length() 的别名。完全取决于你是要使用 length() 还是 size():

示例

cpp 复制代码
string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << "txt 字符串的长度为: " << txt.size();

C++ 访问字符串

你可以通过在方括号 \[\] 内引用其索引号来访问字符串中的字符。

以下示例打印 myString 中的第一个字符:

示例

cpp 复制代码
string myString = "Hello";
cout << myString[0];
// 输出 H

注意:字符串的索引从 0 开始:0 是第一个字符,1 是第二个字符,以此类推。

以下示例打印 myString 中的第二个字符:

示例

cpp 复制代码
string myString = "Hello";
cout << myString[1];
// 输出 e

更改字符串字符

要更改字符串中特定字符的值,请引用索引号,并使用单引号:

示例

cpp 复制代码
string myString = "Hello";
myString[0] = 'J';
cout << myString;
// 输出 Jello 而不是 Hello

C++ 特殊字符

因为字符串必须用引号括起来,C++会误解这个字符串,并生成一个错误:

cpp 复制代码
string txt = "We are the so-called "Vikings" from the north.";

避免这个问题的解决方案是使用反斜杠转义字符。

反斜杠 () 转义字符将特殊字符转换为字符串字符:

转义字符 结果 描述 ' ' 单引号 " " 双引号 \ \ 反斜杠 序列 " 在字符串中插入双引号:

cpp 复制代码
string txt = "We are the so-called \"Vikings\" from the north.";

序列 ' 在字符串中插入单引号:

cpp 复制代码
string txt = "It\'s alright.";

序列 \ 在字符串中插入单个反斜杠:

cpp 复制代码
string txt = "The character \\ is called backslash.";

C++ 用户输入字符串

可以使用提取运算符 >> 在 cin 上存储用户输入的字符串:

cpp 复制代码
string firstName;
cout << "Type your first name: ";
cin >> firstName; // 从键盘获取用户输入
cout << "Your name is: " << firstName;

// 输入你的名字: John
// 你的名字是: John

然而,cin 将空格(空白、制表符等)视为终止字符,这意味着它只能存储一个单词(即使你输入多个单词):

cpp 复制代码
string fullName;
cout << "Type your full name: ";
cin >> fullName;
cout << "Your name is: " << fullName;

// 输入你的全名: John Doe
// 你的名字是: John

从上面的示例中,你会期望程序打印出 "John Doe",但它只打印出 "John"。

这就是为什么在处理字符串时,我们经常使用 getline() 函数来读取一行文本。它以 cin 作为第一个参数,字符串变量作为第二个参数:

cpp 复制代码
string fullName;
cout << "Type your full name: ";
getline(cin, fullName);
cout << "Your name is: " << fullName;

// 输入你的全名: John Doe
// 你的名字是: John Doe

C++ 字符串命名空间

你可能会看到一些 C++ 程序在没有标准命名空间库的情况下运行。可以省略 using namespace std 这一行,并将其替换为 std 关键字,后面跟着 :: 运算符用于 string(和 cout)对象:

例子

cpp 复制代码
#include <iostream>
#include <string>

int main() {
  std::string greeting = "Hello";
  std::cout << greeting;
  return 0;
}

你可以选择是否包含标准命名空间库。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

相关推荐
程序猿编码3 分钟前
不用PyTorch,不用CUDA,我用C++手写了一个能跑GPT和Whisper的推理库
c++·pytorch·gpt·大模型·whisper
IT_陈寒4 分钟前
Vite打包时静态资源404?加个斜杠就能解决
前端·人工智能·后端
程序员爱钓鱼12 分钟前
Go 输入输出详解
后端·面试·go
MC皮蛋侠客13 分钟前
TDengine C++ 系列(1):全景与最小闭环——从时序数据到第一个 C++ 读写
大数据·c++·tdengine
程序员爱钓鱼20 分钟前
Rust 生命周期详解:生命周期标注、约束与真实项目应用
后端·面试·rust
MoonBit月兔22 分钟前
MoonBit 受邀亮相 SPLASH/ISSTA 2026,与 Java、Rust、Eiffel、D 语言核心贡献者同场交流
开发语言·后端·rust
狂师32 分钟前
用AI做自动化测试,哪些是真不行,哪些是你不会用?
人工智能·面试·测试
MC皮蛋侠客1 小时前
TDengine C++ 系列(5):C/C++ 连接器——连接管理与查询 API
c语言·c++·tdengine
MC皮蛋侠客1 小时前
TDengine C++ 系列(8):流式计算与最新值缓存——库内实时处理
c++·缓存·tdengine
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧9 小时前
C++学习:基础知识的掌握
c++·visualstudio