std::string常用方法

news/2025/3/12 16:23:33/文章来源:https://www.cnblogs.com/smartljy/p/18767840

std::string常用方法

内容

C++ 的 std::string 是标准库中用于处理字符串的核心类,提供了丰富的操作方法。以下是常用的方法分类整理,附示例代码和关键说明:


1. 构造与赋值

方法 说明 示例
string() 默认构造空字符串 string s1;
string(const char*) 从C风格字符串构造 string s2("hello");
string(size_t n, char c) 构造包含 n 个字符 c 的字符串 string s3(5, 'a'); // "aaaaa"
operator= 赋值操作 s1 = "world";

2. 容量操作

方法 说明 示例
size() / length() 返回字符数量(等价) int len = s.size();
empty() 判断是否为空字符串 if (s.empty()) { ... }
reserve(size_t n) 预分配内存(优化多次追加操作) s.reserve(100);
capacity() 返回当前分配的存储容量 int cap = s.capacity();

3. 元素访问

方法 说明 示例
operator[] 访问字符(不检查越界) char c = s[0];
at(size_t pos) 访问字符(越界抛出 out_of_range char c = s.at(1);
front() 首字符 char c = s.front();
back() 末字符 char c = s.back();

4. 修改操作

方法 说明 示例
append() 追加字符串/字符 s.append("!!");
push_back(char c) 尾部追加单个字符 s.push_back('!');
insert(pos, args) 在指定位置插入内容 s.insert(3, "xxx");
erase(pos, len) 删除从 pos 开始的 len 个字符 s.erase(2, 3);
clear() 清空字符串 s.clear();
replace(pos, len, str) 替换子串 s.replace(2, 2, "xx");

5. 字符串操作

方法 说明 示例
c_str() 返回C风格字符串(const char* printf("%s", s.c_str());
substr(pos, len) 提取子串(默认到结尾) string sub = s.substr(2, 3);
find(str, pos) 查找子串位置(返回索引或 string::npos int idx = s.find("lo");
rfind() 从后向前查找 idx = s.rfind('o');
compare(str) 比较字符串(返回0表示相等) if (s.compare("test") == 0)

6. 迭代器支持

方法 说明 示例
begin() / end() 正向迭代器 for (auto it = s.begin(); it != s.end(); ++it)
rbegin() / rend() 反向迭代器 for (auto rit = s.rbegin(); rit != s.rend(); ++rit)

7. 其他实用操作

方法 说明 示例
swap(string& other) 交换两个字符串内容 s1.swap(s2);
getline(istream&, string&) 从输入流读取一行字符串 getline(cin, s);
stoi(), stol(), stof() 字符串转数值(C++11) int num = stoi("123");

示例代码:综合用法

#include <iostream>
#include <string>
using namespace std;int main() {string s = "Hello";s.append(" World");       // "Hello World"s.insert(5, " C++");      // "Hello C++ World"s.replace(6, 3, "STL");   // "Hello STL World"size_t pos = s.find("STL");if (pos != string::npos) {cout << "Found 'STL' at position: " << pos << endl;}string sub = s.substr(6, 3); // "STL"cout << "Substring: " << sub << endl;return 0;
}

注意事项

  1. 越界访问operator[] 不检查越界,优先使用 at() 提高安全性。
  2. C风格字符串c_str() 返回的指针在字符串修改后可能失效。
  3. 性能优化:频繁拼接字符串时,使用 reserve() 预分配内存减少动态扩容开销。

建议参考 C++官方文档 深入学习更多细节。

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

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

相关文章

SpringSecurity5(2-自定义用户信息)

Spring Security允许自定义用户信息以满足特定的认证需求。通过实现UserDetailsService接口,可以从数据库或其他存储源加载用户信息。自定义UserDetails类,提供用户名、密码、权限等信息,并结合Spring Security的AuthenticationManager进行身份验证。这样可以灵活地实现复杂…

No.60 Vue---事件处理

一、事件处理 1.1 监听事件(添加事件)我们可以使用 v-on 指令 (通常缩写为 @ 符号)来监听 DOM 事件,并在触发事件时执行一些JavaScript。用法为v-on:click="methodName”或使用快捷方式 @click="methodName”.<template><div><button v-on:click=&…

基于TPM的远程认证之一(TCG文档-验证篇)

PCR值验证 在PCR值足够静态或者验证者有证明者的PCR标准值的情况下,可以使用PCR值验证的方式验证平台的可信度。在PCR复合验证中,这种方法要求验证者拥有一个固定的断言PCR复合值列表,这样证明者就只发送报价(带有PCR值的哈希值),而不必发送完整的PCR值或事件日志。或者,…

day:19 html实战2

一、链接标签 1、定义: 从一个网页指向另一个网页的目的地,这个目标可以是一个网页,也可以图片,一个文件,一个网站等 2、链接的类型 a、生成信廉基覆盖源链接 b、新开一个窗口 c、图片链接 d、死链接 3、链接操作代码:链接标签百度(覆盖原有窗口) 京东(另开一个窗口)死…

数据采集仪 传感器采集读数仪 兼容多类型振弦、电压、电流传感器 分组存储与自动导出

数据采集仪 传感器采集读数仪 兼容多类型振弦、电压、电流传感器 分组存储与自动导出VH501TC是一款多功能手持式数据采集仪,专为单弦式振弦传感器设计,同时兼容电压、电流传感器的数据采集。该设备集成了先进的LoRA无线通信技术,可与本公司NLM系列产品无缝对接,实现远程无线…

gitlab+jenkins+harbor+k8s安装操作流程之jenkins gitlab harbor页面配置操作截图

现在文档阶段,实现的操作,开发人员下载或者上传新的代码,提交后jenkins自动构建到jenkinsworkspace目录中,构建过程中,利用build-shell的方式,把workspace中的代码目录制作成镜像,打包,并发送到harbor中,注意:在每个项目目录内,必须有dockerfile文件,才可以发布 1.…

20250227 大作业——HTML6标签设计工作日志

HTML6标签创新设计工作日志 2025.02.27——2025.02.28 高级程序设计课布置了大作业,要求如图 于是去询问 AI ,有哪些方面可以做,决定花一两天时间去了解咨询一下。得到了很多消息,就是现在HTML5所具有的一些功能可以参考这个网站,因为设计者的原因,很多功能可能我们平常不…

效率炸雷!Ethernetip转Profinet网关H+E流量计用EipScan连接预连

本期给大家带来H+E流量计与EipScan模拟软件连通案例。由于很多客户现场任务时间紧任务重的特点,在不确定所购买的稳联技术Profinet转Ethernetip网关(WL-PNS-EIPM)能否与H+E流量计正常通讯的情况下,用EipScan模拟软件先测通。下面就介绍下如何用EipScan模拟软件连通且不通过…

穿越“协议迷雾”:Modbus转Profinet与60LB伺服的传奇相遇

本研究案例深入剖析了稳联技术Modbus转Profinet网关(WL-ABC3010)在60LB系列通用伺服驱动器与PLC互联场景中的具体应用。此次应用所涉及的关键设备涵盖了西门子S7-1200PLC、Modbus转Profinet网关以及60LB系列通用伺服驱动器。借助网关对通信协议的转换功能,使得遵循MODBUS协议…

Python 中 Windows 和 macOS 的路径格式不一致问题

Python 中 Windows 和 macOS 的路径格式不一致问题Python 中 Windows 和 macOS 的路径格式不一致问题 在 Python 中,Windows 和 macOS 的文件路径字符串格式不一致主要体现在路径分隔符上:Windows 使用反斜杠 \(如 C:\Users\file.txt),而 macOS 使用正斜杠 /(如 /Users/f…

Zabbix agent编译安装详细教程

文章出处:乐维社区背景: 公司之前一直是用的预编译好的zabbix agent包在redhat、centos等进行安装部署。最近内部部署了一套新的操作系统(TencentOS Server),用之前的agent包发现并不能正常启动agent,具体报错是关于bash变量的: /bin/bash: 没有那个文件或目录 最开始以…

那智机器人维修30编码器异常报警代码处理

那智机器人维修报警代码的核心功能,在于为技术人员提供机器人在运作流程中遭遇故障或异常时的详尽信息,以便他们能够迅速且准确地锁定问题所在,并采取有效的修复措施。这些报警代码被精心设计为多个类别,每一个类别都精准对应着一种特定的故障或异常情形,使得问题的诊断与…