C++中的String的常用函数用法总结

C++ 中 string 的常用函数用法总结(全面实用版)

C++ 中字符串使用std::string(位于<string>头文件),它是标准库提供的强大、安全、易用的字符串类,远优于 C 风格的 char 数组。

1. 头文件与命名空间
#include<string>// 必须包含usingnamespacestd;// 常用,或写 std::string
2. 基本创建与初始化
string s1;// 空字符串string s2="hello";// C风格字符串初始化strings3("world");// 构造函数strings4(5,'a');// "aaaaa"strings5(s2);// 拷贝构造strings6(s2,1,3);// 从s2第1位开始取3个字符 → "ell"
3. 常用成员函数大全(按功能分类)
函数用法示例说明返回值/效果
长度与容量
size() / length()s.length()返回字符串长度(字符数)size_t
empty()s.empty()判断是否为空bool
capacity()s.capacity()当前分配的内存容量size_t
reserve(n)s.reserve(100)预分配空间,避免频繁扩容void
增删改
+= / append()s += “abc”;
s.append(“def”)
追加字符串string&
push_back(ch)s.push_back(‘x’)追加单个字符void
insert(pos, str)s.insert(2, “xyz”)在pos位置插入strstring&
erase(pos, len)s.erase(0, 3)从pos开始删除len个字符string&
clear()s.clear()清空字符串void
pop_back()s.pop_back()删除最后一个字符(C++11)void
访问与修改
[ ]s[0] = ‘H’访问/修改字符(不检查边界)char&
at()s.at(0) = ‘H’访问/修改字符(越界抛异常)char&
front()char c = s.front()第一个字符(C++11)char&
back()char c = s.back()最后一个字符(C++11)char&
查找
find(str, pos=0)s.find(“abc”)从pos开始查找str,返回首次出现位置size_t(没找到返回 string::npos)
rfind(str, pos=npos)s.rfind(“abc”)从pos向前找最后一次出现位置size_t
find_first_of(str)s.find_first_of(“aeiou”)找第一个元音位置size_t
find_last_of(str)s.find_last_of(“xyz”)找最后一个匹配字符位置size_t
find_first_not_of(str)找第一个不在str中的字符size_t
子串
substr(pos, len)string t = s.substr(1, 3)从pos开始取len个字符string
替换
replace(pos, len, str)s.replace(0, 5, “Hi”)用str替换从pos开始的len个字符string&
比较
compare(str)s.compare(t)字典序比较int(<0: s<t, =0相等, >0 s>t)
== != < > <= >=s == t支持直接比较运算符bool
转换
c_str()const char* p = s.c_str()获取C风格字符串(以\0结尾)const char*
data()const char* p = s.data()获取字符数组(C++17前不一定\0结尾)const char*
copy(char* buf, len, pos=0)s.copy(buf, 5, 0)拷贝到buf(不自动加\0)size_t
4. 与 C 风格字符串互转
// string → char*string s="hello";constchar*c=s.c_str();// 用于 printf、fopen 等需要 const char* 的函数// char* → stringcharch[]="world";strings2(ch);// 直接构造string s3=ch;// 赋值
5. 输入输出(与 cin/cout)
string s;cin>>s;// 读取单词(遇到空格停止)getline(cin,s);// 读取整行(包含空格,推荐)cout<<s<<endl;
6. 实用示例代码
#include<iostream>#include<string>usingnamespacestd;intmain(){string s=" Hello World! ";// 常用操作组合s=s.substr(2,5);// "Hello"s.append(" C++");// "Hello C++"s.insert(5,",");// "Hello, C++"s.replace(6,3,"World");// "Hello, World"// 查找size_t pos=s.find("World");if(pos!=string::npos){cout<<"找到位置: "<<pos<<endl;// 输出 7}// 去除首尾空格(C++11前手动实现)s.erase(0,s.find_first_not_of(" \t"));s.erase(s.find_last_not_of(" \t")+1);cout<<"\""<<s<<"\""<<endl;// "Hello, World"return0;}
7. 注意事项与最佳实践
  • size()length()完全等价。
  • string::npos是常量,通常为 -1(size_t 的最大值),用于表示“未找到”。
  • []不检查边界,越界未定义行为;at()检查边界,越界抛out_of_range异常。
  • c_str()返回的指针在 string 被修改或销毁后失效。
  • string 是可拷贝的,但大字符串建议传 const string& 避免拷贝。
  • C++11 后推荐使用front()back()pop_back()

掌握以上函数,就能轻松处理 95% 的字符串操作需求!如果有特定场景(如分割字符串、转数字),欢迎继续提问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】错误SyntaxError: invalid syntax的解决方法总结

Python 中 SyntaxError: invalid syntax 错误解决方法总结 SyntaxError: invalid syntax 是 Python 最常见的语法错误&#xff0c;意思是“代码写法不符合 Python 语法规则”。编译器会在出错的那一行&#xff08;或上一行&#xff09;报错&#xff0c;并用 ^ 指向大致位置。 …

震惊!英伟达GPU贵1.86倍,性能却碾压AMD 15倍!大模型开发者必看算力真相,看完直接换卡?

为什么AI算力霸主永远是英伟达&#xff1f; 不算不知道&#xff0c;一算吓一跳&#xff1a;在英伟达平台每花一美元&#xff0c;获得的性能是AMD的15倍。 尽管英伟达卖的更贵&#xff0c;但只要买齐一套&#xff0c;就更省钱。 来自Signal65的一份最新详尽报告揭示了这个现实…

BERT模型实战:金融新闻去重系统全解析

&#x1f31f; BERT模型实战&#xff1a;金融新闻去重系统全解析 &#x1f4d6; 引言&#xff1a;为什么我们需要文本相似度检测&#xff1f; 想象一下&#xff0c;你正在监控金融市场的实时新闻。同一则消息"黄金价格今日上涨"可能被多家媒体以不同方式报道&#xf…

直流无感无刷电机方波控制全解析

直流无感无刷电机方波控制&#xff01;初始位置检测&#xff01; 1.代码方便修改和移植&#xff0c;不是库&#xff01; 2.方案&#xff1a;ADC和比较器&#xff0c;ADC检测完位置强拖&#xff0c;比较器检测完位置直接切闭环运行。 3.控制方式&#xff1a;开环/速度环/双闭环 …

强烈安利MBA必用8个一键生成论文工具测评

强烈安利MBA必用8个一键生成论文工具测评 2026年MBA论文写作工具测评&#xff1a;为什么你需要这份榜单&#xff1f; 随着MBA课程的深入&#xff0c;论文写作成为每位学生必须面对的重要任务。然而&#xff0c;从选题、资料收集到结构搭建、语言润色&#xff0c;整个过程往往耗…

深度测评10个AI论文写作软件,继续教育学生轻松搞定论文!

深度测评10个AI论文写作软件&#xff0c;继续教育学生轻松搞定论文&#xff01; AI 工具如何让论文写作更高效 在当前的学术环境中&#xff0c;继续教育学生面临着越来越高的论文写作要求。无论是本科、硕士还是博士阶段&#xff0c;撰写高质量的论文已成为一项不可或缺的任务。…

AI不再“一本正经胡说八道“!LLM+RAG融合技术实战指南,让大模型回答有据可查,小白也能轻松上手

LLM与RAG融合应用 一、 定义 LLM与RAG融合应用&#xff0c;是将检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09; 技术与大语言模型&#xff08;Large Language Model&#xff09; 结合的AI方案&#xff0c;核心是让LLM在生成内容前&#xff0c;先从外部…

2026 届计算机毕业设计全流程指南(从 0 到答辩)

对于 2026 届计算机专业的同学来说&#xff0c;毕业设计往往是大学阶段最重要、也是最让人焦虑的一项任务。很多同学在真正开始之前&#xff0c;并不清楚毕业设计到底要做什么、该从哪里下手、每个阶段需要完成哪些内容&#xff0c;结果越拖越慌&#xff0c;最后被迫赶工。本文…

TreeUtil树构建工具-超好用工具

一、引言在软件开发中&#xff0c;树形结构是一种基础且重要的数据组织形式&#xff0c;广泛应用于组织架构、权限管理、商品分类、评论回复等场景。然而&#xff0c;将数据库中的扁平化数据转换为层级化的树形结构&#xff0c;一直是开发者面临的常见挑战。本文将深入探讨两种…

计算机专业毕设怎么选题?老师最容易通过的 20 个方向

对于计算机专业的同学来说&#xff0c;毕业设计的第一道难关不是写代码&#xff0c;而是选题。很多学生一开始就陷入误区&#xff1a;要么题目太大、实现难度过高&#xff0c;要么题目过于简单、缺乏“设计意义”&#xff0c;最终在开题阶段就被导师反复打回。实际上&#xff0…

AI 技术在英语培训中的应用

AI 技术已全面渗透英语培训的每一个环节。它不再仅仅是一个“查词工具”或“翻译插件”&#xff0c;而是进化成了具备情感感知能力、行业深度洞察力以及全天候陪练能力的“虚拟私教”。以下是 AI 技术在英语培训中的核心应用&#xff1a;1. 沉浸式对话与 Agent 智能体外教口语练…

Visual Studio 2022中配置cuda环境

一、前置条件&#xff08;必须先完成&#xff09; 在配置VS2022前&#xff0c;你需要先安装好以下软件&#xff0c;否则配置会失败&#xff1a; NVIDIA显卡驱动&#xff1a;确保你的电脑有NVIDIA独立显卡&#xff0c;且安装了最新/兼容的显卡驱动&#xff08;可通过NVIDIA控制…

从零到一全面掌握MySQL:安装配置、SQL详解与数据库实战理解

MySQL相关知识点可以通过点击以下链接进行学习一起加油&#xff01; 文章目录 MySQL与MariaDB&#xff1a;同源而生的数据库系统一、MySQL的安装与初步配置 1. 更新系统软件包列表2. 安装MySQL服务器3. 检查MySQL服务状态4. 首次登入MySQL5. 为root用户配置密码 步骤一&#xf…

MySQL保姆级教程:从安装部署到核心概念,快速上手避坑指南

MySQL相关知识点可以通过点击以下链接进行学习一起加油&#xff01; 文章目录 MySQL与MariaDB&#xff1a;同源而生的数据库系统一、MySQL的安装与初步配置 1. 更新系统软件包列表2. 安装MySQL服务器3. 检查MySQL服务状态4. 首次登入MySQL5. 为root用户配置密码 步骤一&#xf…

飞书多维表格基础操作

本文档旨在指导用户从零开始搭建一套包含客户管理、电联记录及快捷录入功能的 CRM 系统&#xff0c;涵盖 AI 字段应用、自动化工作流配置及仪表盘展示。1. 环境准备与设置 在开始操作前&#xff0c;请确保使用体验最佳的客户端环境。 安装客户端&#xff1a;下载并安装 Windows…

tcpdump抓包实战:命令行网络诊断利器

前言 Wireshark虽然好用&#xff0c;但服务器上通常没有图形界面。tcpdump是Linux下最常用的命令行抓包工具&#xff0c;排查网络问题、分析协议、定位连接异常都离不开它。 本文整理tcpdump的常用技巧&#xff0c;从基础语法到实际问题排查&#xff0c;配合真实场景案例。1. 基…

一篇搞定MySQL:从环境搭建到深入理解,高效入门数据库

MySQL相关知识点可以通过点击以下链接进行学习一起加油&#xff01; 文章目录 MySQL与MariaDB&#xff1a;同源而生的数据库系统一、MySQL的安装与初步配置 1. 更新系统软件包列表2. 安装MySQL服务器3. 检查MySQL服务状态4. 首次登入MySQL5. 为root用户配置密码 步骤一&#xf…

在线作图工具测评盘点:4款主流工具深度横评

随着数字化办公场景的深化&#xff0c;在线作图工具已成为技术团队、运营人员、创业者的必备生产力工具。相较于传统桌面设计软件&#xff0c;在线工具无需本地部署、支持跨设备协作、轻量化操作的优势愈发凸显。本次测评聚焦市场主流在线作图工具&#xff0c;以“专业实用性、…

网络延迟与丢包问题排查实战

前言 服务响应慢、接口超时、用户反馈卡顿&#xff0c;很多时候问题出在网络层面。延迟高、丢包、抖动这些问题看起来简单&#xff0c;排查起来却需要一套系统的方法。 本文整理网络延迟和丢包问题的排查思路和常用工具&#xff0c;配合实际案例。1. 基础检测工具 1.1 ping&…

深度解构:从chroot到容器——Mock构建环境的隔离技术演进与问题诊断

深度解构&#xff1a;从chroot到容器——Mock构建环境的隔离技术演进与问题诊断 引言&#xff1a;RPM构建的隔离需求 在Linux发行版开发中&#xff0c;RPM包的构建需要一个干净、可控的环境以确保构建的可重复性和可靠性。Mock作为Fedora社区开发的RPM构建工具&#xff0c;正…