写点什么

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

作者:小万哥
  • 2024-03-28
    广东
  • 本文字数:2027 字

    阅读完需:约 7 分钟

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

C++ 字符串

字符串用于存储文本。


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


示例


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


string greeting = "Hello";
复制代码

C++ 字符串连接

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


示例:


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


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


示例:


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


追加:


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


示例:


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

C++ 数字和字符串

将数字和字符串相加

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


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


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


示例:


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


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


示例:


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


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


示例:


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

C++ 字符串长度

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


示例


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


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


示例


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

C++ 访问字符串

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


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


示例


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


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


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


示例


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

更改字符串字符

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


示例


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

C++ 特殊字符

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


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


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


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


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


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


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


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


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


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

C++ 用户输入字符串

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


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


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


string fullName;cout << "Type your full name: ";cin >> fullName;cout << "Your name is: " << fullName;
// 输入你的全名: John Doe// 你的名字是: John
复制代码


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


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


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)对象:


例子


#include <iostream>#include <string>
int main() { std::string greeting = "Hello"; std::cout << greeting; return 0;}
复制代码


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

最后

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


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


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

发布于: 刚刚阅读数: 5
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
C++ 字符串完全指南:学习基础知识到掌握高级应用技巧_程序人生_小万哥_InfoQ写作社区