Logo
Section 1 / 6

字符串基础

学习如何访问字符串中的各个元素。

导入

字符串基础

学习如何访问字符串中的各个元素。

集合

集合 是一个通用术语,用于将多个值组合成一个整体。我们在现实生活中经常使用集合——一本书是页面的集合,一列火车是车厢的集合,一个衣柜是衣物的集合。

...

字符串

字符串 是字符的集合,通常被视为一个单一单元。字符串用于存储文本值,如姓名、地址、消息等。

字符串的初始化

以下程序演示了字符串的初始化:

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string string1 = "这是一个字符串。"; 8 cout << string1 << endl; 9 10 return 0; 11}

注意: 我们必须在第2行编写 #include <string>,以包含允许在程序中使用 string 数据类型的头文件 string。

在上述代码中:

  • 第7行,我们将 string1 初始化为用双引号 " 包裹的文本值。
  • 第8行,我们输出该字符串。

访问字符串中的字符

C++ 允许我们通过整数 索引 来访问字符串中的单个字符。为此,我们在字符串变量名后用方括号 [ ] 包含索引号,如下所示的程序:

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string string1 = "Educative"; 8 cout << string1 << endl; 9 10 cout << string1[0] << endl; // 显示字符串的第一个元素 11 cout << string1[1] << endl; // 显示字符串的第二个元素 12 cout << string1[2] << endl; // 显示字符串的第三个元素 13 cout << string1[3] << endl; // 显示字符串的第四个元素 14 cout << string1[4] << endl; // 显示字符串的第五个元素 15 cout << string1[5] << endl; // 显示字符串的第六个元素 16 cout << string1[6] << endl; // 显示字符串的第七个元素 17 cout << string1[7] << endl; // 显示字符串的第八个元素 18 cout << string1[8] << endl; // 显示字符串的第九个元素 19 return 0; 20}

上述代码逐行显示字符串的各个字符。第一个字符位于索引 0,索引沿字符串线性递增,如下图所示:

...
带索引的字符串值

同样的程序也可以使用循环重写,如下所示,实现相同的功能:

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string string1 = "Educative"; 8 cout << string1 << endl; // 显示整个字符串 9 int length = 9; // 存储数组的长度 10 11 for (int i = 0; i < length; i++) // for 循环逐个显示字符串字符 12 { 13 cout << string1[i] << endl; 14 } 15 16 return 0; 17}

拼接

使用 + 运算符连接两个字符串称为 拼接,如下代码所示:

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string str1 = "Hello"; 8 string str2 = "Educative"; 9 string str3 = str1 + str2; 10 string str4 = str1 + " " + str2; 11 12 cout << str1 << endl; 13 cout << str2 << endl; 14 cout << str3 << endl; // 拼接时不加空格 15 cout << str4 << endl; // 拼接时加空格 16 return 0; 17}

在上述代码中:

  • 第9行:我们将 str1 和 str2 拼接,并将结果存储在 str3 中。两个单词之间没有空格。
  • 第10行:我们将 str1、" " 和 str2 拼接,并将结果存储在 str4 中。两个单词之间有空格。

字符串操作练习

以下是几个用于练习 C++ 中字符串操作的示例程序。点击“显示答案”按钮将显示解决相应问题的程序。您可以将给出的解决方案复制粘贴到代码编辑器中,以确保您的输出与给定解决方案一致。编程中可能存在多种正确的解决方案。

反向打印字符

编写一个程序,按行反向显示字符串的每个字符。字符串长度限制为九个字符。

示例输入

1"Educative"

示例输出

1e 2v 3i 4t 5a 6c 7u 8d 9E
1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string str = "Educative"; 8 // 在此处编写代码。 9 return 0; 10}

您可以在上方的代码编辑器中运行以下代码:

1#include <iostream> 2#include <string> 3using namespace std; 4int main() 5{ 6 string str = "Educative"; 7 cout << str[8] << endl; 8 cout << str[7] << endl; 9 cout << str[6] << endl; 10 cout << str[5] << endl; 11 cout << str[4] << endl; 12 cout << str[3] << endl; 13 cout << str[2] << endl; 14 cout << str[1] << endl; 15 cout << str[0] << endl; 16 return 0; 17}

在上述程序中:

  • 我们使用变量 string 存储文本 Educative。
  • 我们使用索引反向显示 string 的各个字符。

或者

您也可以在上方的代码编辑器中运行以下代码:

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string string1 = "Educative"; 8 cout << string1 << endl; // 显示整个字符串 9 10 for (int i = 8; i >= 0; i--) // for 循环反向逐个显示字符串字符 11 { 12 cout << string1[i] << endl; 13 } 14 15 return 0; 16}

在上述程序中:

  • 我们使用变量 string 存储文本 Educative。
  • 我们使用索引和 for 循环反向显示 string 的各个字符。

左移字符串中的字符

编写一个程序,将字符串中的字符向左移动,并将最后一个位置替换为点号。字符串长度限制为九个字符。

示例输入

1"Educative"

示例输出

1ducative.

提示: 使用索引来更新字符串中的每个字符。

1#include <iostream> 2#include <string> 3 4int main() 5{ 6 string myString = "Educative"; 7 // 在此处编写代码 8 return 0; 9}

您可以在上方的代码编辑器中运行以下代码:

1#include <iostream> 2#include<string> 3using namespace std; 4 5int main() 6{ 7 string myString = "Educative"; 8 myString[0] = myString[1]; 9 myString[1] = myString[2]; 10 myString[2] = myString[3]; 11 myString[3] = myString[4]; 12 myString[4] = myString[5]; 13 myString[5] = myString[6]; 14 myString[6] = myString[7]; 15 myString[7] = myString[8]; 16 myString[8] = '.';// 单个字符赋值 17 18 cout << myString << endl; 19 return 0; 20}

在上述程序中:

  • 我们使用变量 myString 存储文本 Educative。
  • 我们逐个将 myString 的每个字母向左移动。本质上,我们将某个索引处的字符更新为其前一个索引的字符。在最后一个索引处,我们存储一个字符 '.'。
  • 我们显示 myString 的更新后的值。

反转字符串

编写一个程序,将一个字符串的内容以相反顺序存储到另一个字符串中。字符串长度限制为九个字符。

示例输入

1"Educative"

示例输出

1evitacudE
1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string myString = "Educative"; 8 // 在此处编写代码。 9 return 0; 10}

您可以在上方的代码编辑器中运行以下代码:

1#include <iostream> 2#include<string> 3using namespace std; 4 5int main() 6{ 7 string myString1 = "Educative"; 8 string myString2; // 空字符串 9 myString2 += myString1[8]; // 将 myString1 的最后一个字符连接到 myString2 10 myString2 += myString1[7]; 11 myString2 += myString1[6]; 12 myString2 += myString1[5]; 13 myString2 += myString1[4]; 14 myString2 += myString1[3]; 15 myString2 += myString1[2]; 16 myString2 += myString1[1]; 17 myString2 += myString1[0]; // 将 myString1 的第一个字符连接到 myString2 18 19 cout << myString2 << endl; 20 return 0; 21}

在上述程序中:

  • 我们使用变量 myString1 存储文本 Educative。
  • 我们使用另一个变量 myString2 在程序结束时保存 myString1 的反转内容。
  • 我们将 myString1 从索引 8 到索引 0 的最后一个字符依次连接到 myString2 的末尾。
  • 我们显示 myString2 的更新值。

或者

1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string myString1 = "Educative"; 8 string myString2; // 空字符串 9 for (int i = 8; i >= 0; i--) 10 { 11 myString2 += myString1[i]; 12 } 13 14 cout << myString2 << endl; 15 return 0; 16}

在上述程序中:

  • 我们使用变量 myString1 存储文本 Educative。
  • 我们使用另一个变量 myString2 在程序结束时保存 myString1 的反转内容。
  • 我们使用一个倒序计数器 i 的 for 循环,从索引 8 到索引 0 访问 myString1 的每个索引。
  • 在循环中,我们将 myString1 的每个字符连接到 myString2 的末尾。
  • 我们显示 myString2 的更新值。

回文测试

回文 是一个正读和反读都相同的字符序列。编写一个程序来检查一个字符串是否为回文。考虑长度为五个字符的字符串。

示例输入 1

1"level"

示例输出 1

1回文

示例输入 2

1"legal"

示例输出 2

1不是回文
1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() 6{ 7 string str = "level"; 8 // 在此处编写代码。 9 return 0; 10}

您可以在上方的代码编辑器中运行以下代码(一种可能的解决方案):

1#include<iostream> 2#include <string> 3using namespace std; 4 5int main () 6{ 7 string str = "level"; 8 if(str [0] == str [4] && str [1] == str [3]) 9 { 10 cout << "回文" << std::endl; 11 } 12 else 13 { 14 cout << "不是回文" << endl; 15 } 16 return 0; 17}

在上述代码中:

  • 我们使用 string 变量 str 存储文本 level。
  • 我们比较字符串的第一个索引值与最后一个索引值,然后比较第二个索引值与倒数第二个索引值,作为条件表达式。
  • 我们使用逻辑运算符 && 将两个条件连接起来,当两个条件都为真时返回 true。
  • 如果条件表达式为真,则显示 回文;否则显示 不是回文。

C++中的循环

值的数组