c++ #include <string> 介绍

news/2024/9/18 17:25:59/ 标签: c++, 开发语言, 算法, string

#include <string> 是 C++ 中用于包含 std::string 类的头文件。std::string 是 C++ 标准库中的一个类,提供了一种方便和强大的方式来处理文本字符串。它是 C++ 标准库中的常用工具,用来替代 C 语言中的字符数组(char[])来进行字符串操作。

1. #include <string>

  • #include:预处理指令,用于在编译时将指定的头文件内容插入到源文件中。
  • <string>:C++ 标准库中的头文件,包含了 std::string 类的定义和实现。

2. std::string 类

std::string 是一个封装好的类,提供了比传统 C 风格字符串(char[])更高级的字符串操作。C++ 标准库中的 std::string 类位于 std 命名空间中。

3. 常用的 std::string 成员函数

  • 构造函数:可以从 C 风格字符串、另一个字符串、字符等创建 std::string 对象。

std::string s1("Hello"); // 通过 C 字符串构造
std::string s2 = s1;     // 拷贝构造
std::string s3(5, 'a');  // 创建一个包含 5 个字符 'a' 的字符串

长度和大小

  • size() 或 length() 返回字符串的长度(字符数)。
std::string s = "Hello";
size_t len = s.size();  // len = 5

字符串拼接

  • 可以使用 + 运算符或 append() 函数将两个字符串拼接在一起。
std::string s1 = "Hello";
std::string s2 = " World";
std::string s3 = s1 + s2;  // "Hello World"

查找和子串

  • find() 用于查找子字符串的位置,substr() 用于提取子字符串。
std::string s = "Hello World";
size_t pos = s.find("World");  // pos = 6
std::string sub = s.substr(0, 5);  // sub = "Hello"

比较

  • std::string 提供了 ==!=< 等运算符来比较字符串的内容。
std::string s1 = "abc";
std::string s2 = "def";
if (s1 == s2) {// 比较字符串内容
}

4.使用示例

#include <iostream>
#include <string>int main() {std::string greeting = "Hello";std::string name = "Alice";std::string message = greeting + ", " + name + "!";  // 字符串拼接std::cout << message << std::endl;  // 输出: Hello, Alice!// 查找子字符串size_t pos = message.find("Alice");if (pos != std::string::npos) {std::cout << "'Alice' found at position: " << pos << std::endl;}return 0;
}

5. std::string 与 C 风格字符串的区别

  • 自动管理内存std::string 会自动管理内存分配和释放,避免手动管理内存带来的潜在问题。
  • 更安全std::string 通过类的封装,提供了更多的安全性和方便性,避免了 C 风格字符串常见的缓冲区溢出等问题。
  • 更丰富的功能std::string 提供了丰富的成员函数,可以方便地进行字符串的操作(如查找、替换、拼接、比较等),而 C 风格字符串则需要依赖函数库(如 strlen()strcpy() 等)。


http://www.ppmy.cn/news/1526605.html

相关文章

AMD ThinkSystem服务器上的 Linux 和 C 状态设置 - Lenovo ThinkSystem

受影响的配置 该系统可以是以下任何Lenovo服务器&#xff1a; ThinkSystem 、SR645&#xff08; ThinkSystem &#xff09;ThinkSystem &#xff0c;SR645 V3&#xff08; ThinkSystem &#xff09;ThinkSystem &#xff0c;SR635 V3&#xff08; ThinkSystem &#xff09;Th…

win11下面的virtualenv的使用(没写完)

安装命令 pip install virtualenv pip install virtualenv-win 控制面板-Administrator环境变量配置 VIRTUALENV_CONFIG_FILEE:\ENVS\virtualenv.ini Powershell设置 一、Powershell终端输入下列命令 Test-Path $profile New-Item -path $profile -type file –force 上…

Datawhale------Tiny-universe学习笔记——Qwen

1. Qwen整体介绍 对于一个完全没接触过大模型的小白来说&#xff0c;猛一听这个名字首先会一懵&#xff1a;Qwen是啥。这里首先解答一下这个问题。下面是官网给出介绍&#xff1a;Qwen是阿里巴巴集团Qwen团队研发的大语言模型和大型多模态模型系列。其实随着大模型领域的发展&a…

Python 正则表达式详解:从基础匹配到高级应用

Python 正则表达式详解&#xff1a;从基础匹配到高级应用 文章目录 Python 正则表达式详解&#xff1a;从基础匹配到高级应用一 功能总览二 不用正则的判断三 使用正则判断1 验证用户邮箱2 正则返回匹配信息 四 多条件匹配五 按类型匹配六 匹配中文七 查找替换等功能八 在模式中…

vulnhub(7):Toppo(经典的suid滥用提权)

端口 nmap主机发现 nmap -sn 192.168.6.0/24 ​ Nmap scan report for 192.168.6.34 Host is up (0.00020s latency). ​ 34是新出现的机器&#xff0c;他就是靶机 nmap端口扫描 nmap -Pn 192.168.6.34 -p- --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/scan下 ​…

QT操作数据库

思维导图&#xff1a; 学习内容&#xff1a; 1. QSqlDatabase:数据库管理类 主要完成数据库的创建、数据库的打开、关闭等操作 该类中常用函数&#xff1a; 1、 QSqlDatabase addDatabase(const QString &type, const QString &connectionName QLatin1String(default…

人工智能GPT____豆包使用的一些初步探索步骤 体验不一样的工作

豆包工具是我使用比较频繁的一款软件&#xff0c;其集合了很多功能。对话 图像 AI搜索 伴读等等使用都非常不错。电脑端安装集合了很多功能。 官网直达&#xff1a;豆包 使用我的文案创作能力&#xff0c;您可以注意以下几个技巧&#xff1a; 明确需求&#xff1a; 尽可能具…

力扣337-打家劫舍 III(Java详细题解)

题目链接&#xff1a;337. 打家劫舍 III - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 本体是打家劫舍的一个变形题&#xff0c;希望大家能先做198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09;&#xff0c;并看一下我上题的讲解力扣198-打家劫舍&…

TakePhotoX

Demo下载 TakePhotoXDemo Android 版本 APK 下载 - PGYER.COM 安装密码&#xff1a;123456 GitHub - yijiebuyi/TakePhotoX: 基于CameraX 实现拍照&#xff0c;二维码扫描&#xff0c;录像 功能 支持前后摄像头切换支持4:3 16:9 1:1 图片拍摄支持二维码扫描识别支持灯光控制…

Git 提取和拉取的区别在哪

1. 提取&#xff08;Fetch&#xff09; 操作说明&#xff1a;Fetch 操作会从远程仓库下载最新的提交、分支信息等&#xff0c;但不会将这些更改合并到你当前的分支中。它只是将远程仓库的更新信息存储在本地&#xff0c;并不会自动修改你当前的工作区。 使用场景&#xff1a; …

数据库(DB、DBMS、SQL)

今天我来讲解一下数据库和可视化数据库管理系统的使用 数据库概述 数据库 存储数据的仓库&#xff0c;数据是有组织的存储 DataBase (DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBaseMangement System (DBMS) SQL 操作关系型数据库的编程语言&#xff0c;定义…

复现OpenVLA:开源的视觉-语言-动作模型及原理详解

复现OpenVLA&#xff1a;开源的视觉-语言-动作模型及原理详解 1. 摘要2. 引言3. 相关工作4. 模型结构4.1 模视觉-语言模型VLM4.2 训练流程4.3 图像分辨率4.4 微调视觉编码器4.5 训练轮数4.6 学习率4.7 训练细节4.8 参数高效微调 5. 复现5.1 下拉代码5.2 安装环境依赖5.2.1 创建…

大数据之Spark(二)

9.4.3、RDD持久化 RDD之间进行相互迭代计算&#xff08;Transformation的转换&#xff09;&#xff0c;当执行开启&#xff0c;新RDD的生成代表旧RDD消失。如果有的rdd需要重复使用就需要将rdd缓存&#xff0c;rdd.cache()或rdd.persist()。清理缓存rdd.unpersist() 缓存特点&…

C++ 11新特性(1)

文章目录 C11新特性之auto和decltype知识点autoauto推导规则什么时候使用auto&#xff1f; decltypedecltype推导规则 auto和decltype的配合使用 C11新特性之左值引用、右值引用、移动语义、完美转发左值、右值纯右值、将亡值纯右值将亡值左值引用、右值引用 移动语义深拷贝、浅…

如何使用Chainlit让所有网站快速嵌入一个AI聊天助手Copilot

Copilot 副驾驶 Software Copilot 是嵌入到您的应用/产品中的一种新型助手。它们旨在通过提供情境指导并代表用户采取行动来帮助用户充分利用您的应用。 支持的功能 信息流媒体元素声音的询问用户聊天记录聊天资料反馈✅✅✅✅✅❌✅✅ 嵌入 Copilot 首先&#xff0c;确保您…

centos7安装MySQL5.7.44

下载压缩文件 命令&#xff1a; #放到在/usr/local目录下 cd /usr/local #上传命令选择安装包 rz #解压缩包 tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz #给包重命名为mysql mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql #查看mysql目录下有什么东西 [rootlocal…

QT界面中的区域以及图像大小,想随着QT界面的放大缩小变化,如何实现?

原始界面 原始界面ui文本长这样&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>MainWindow</class><widget class"QMainWindow" name"MainWindow"><prope…

QT实现TCP协议

QT中实现服务器原理 QT中实现客户端原理 网络聊天室服务器实现 用QTcpServer服务器类实例化一个服务器对象通过listen&#xff08;&#xff09;函数&#xff0c;监听客户端&#xff0c;监听可以监听指定主机&#xff0c;也可以监听任意主机&#xff0c;监听的端口号&#xff0…

云手机哪一款好用?手游专用云手机一览!VMOS云手机

云手机&#xff0c;顾名思义&#xff0c;是一台运行在云端服务器上的虚拟手机。它具备传统手机的所有功能&#xff0c;但无需实际设备支持运算和存储。所有的计算、存储以及应用运行都由云端服务器承担。用户只需通过浏览器或客户端访问云手机的操作界面&#xff0c;就可以像操…

双指针算法专题(2)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 想要了解双指针算法的介绍&#xff0c;可以去看下面的博客&#xff1a;双指针算法的介绍 目录 611.有效三角形的个数 LCR 1…