C++STL中string头文件的各种函数以及使用方法与细节

在C++ STL中,string 类提供了丰富的函数来处理字符串,以下是一些常用函数的详细介绍和使用方法,以及在算法竞赛中的使用细节和总结。

头文件

要使用 string 类,首先需要包含头文件:

#include <string>

构造函数

string 类提供了多种构造函数,可以初始化字符串:

  • 使用字符串字面值初始化:
    string myString = "Hello, World!";
    
  • 使用已有 string 初始化:
    string original = "Hello";
    string copy = original;
    
  • 使用C风格字符串初始化:
    const char* cstr = "C-style string";
    string myString(cstr);
    
  • 使用字符数组和长度初始化:
    char arr[] = {'H', 'e', 'l', 'l', 'o'};
    string myString(arr, 5);
    

访问/赋值

  • 迭代器string 提供了迭代器来访问字符串中的每个字符。
  • 下标/at:通过下标访问字符,at 函数在越界时抛出异常。
    string str = "Hello";
    char c = str[0]; // 'H'
    char c_at = str.at(0); // 'H'
    
  • assign (赋值函数):重新赋值给字符串。
    string str;
    str.assign("New Value");
    
  • 连接符:使用 + 运算符连接字符串。
    string str1 = "Hello";
    string str2 = "World";
    string str3 = str1 + str2;
    
  • swap (交换函数):交换两个字符串的内容。
    string str1 = "Hello";
    string str2 = "World";
    str1.swap(str2);
    

长度/空间/容量相关函数

  • size/length:返回字符串的长度。
    string str = "Hello";
    size_t length = str.size(); // 5
    
  • capacity:返回字符串的容量。
    size_t capacity = str.capacity(); // 可能大于length
    
  • resize:重新设置字符串的大小。
    str.resize(10); // 将字符串大小改为10
    
  • reserve:预留足够的容量。
    str.reserve(20); // 预留20个字符的空间
    

添加元素

  • insert:在指定位置插入字符串或字符。
    string str = "Hello";
    str.insert(5, " World"); // "Hello World"
    
  • append:在字符串末尾添加字符串或字符。
    string str = "Hello";
    str.append(" World"); // "Hello World"
    

删除元素

  • erase:删除指定位置的字符或子串。
    string str = "Hello World";
    str.erase(5, 6); // "Hello "
    

更改数据

  • replace:替换字符串中的某些字符。
    string str = "Hello World";
    str.replace(5, 5, "There"); // "Hello There"
    
  • copy:复制字符串到字符数组。
    string str = "Hello";
    char buffer[10];
    str.copy(buffer, 5);
    

查找数据

  • find系列:查找子串或字符在字符串中的位置。
    string str = "Hello World";
    size_t pos = str.find("World"); // 返回6
    
  • substr:获取子串。
    string str = "Hello World";
    string sub = str.substr(0, 5); // "Hello"
    

官方中对于string更加详细解释

string - C++ Reference

算法竞赛中的使用细节和总结

  • 字符串拼接:在竞赛中,频繁使用 +append 进行字符串拼接,但注意 + 可能会因为临时对象的创建而导致性能下降。
  • 字符串输入输出:使用 cin >> 读取单词,getline(cin, str) 读取整行。
  • 字符串长度:使用 size()length() 获取字符串长度,两者等价。
  • 字符串比较string 重载了比较运算符,可以用于排序。
  • 字符串查找和替换findsubstr 常用于处理子串问题,replace 用于替换操作。
  • 性能考虑:对于大量字符串操作,考虑使用 reserve 避免不必要的内存分配。

以上是 string 头文件中各种函数的详细介绍和使用方法,以及在算法竞赛中的一些使用细节和总结。希望这些信息能帮助你更好地理解和使用 string 类。

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

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

相关文章

python学习笔记—12—

1. 布尔类型 (1) 定义 (2) 比较运算符 (3) 代码演示 1. 手动定义 bool_1 True bool_2 False print(f"bool_1的内容是&#xff1a;{bool_1}, 类型是&#xff1a;{type(bool_1)}") print(f"bool_2的内容是&#xff1a;{bool_2}, 类型是&#xff1a;{type(bool…

Redis 使用redisTemplate获取某个规则下的key的全量数据(示例Set结构)

如下是redis中存储的数据结构 我想取key以favorites:结尾的所有数据 Redis 的 SCAN 命令用于迭代数据库中的键&#xff0c;支持通过模式过滤结果。模式规则基于 Redis 的通配符匹配语法&#xff0c;类似于文件名匹配规则&#xff1a; *&#xff1a;匹配零个或多个字符。?&…

CertiK《Hack3d:2024年度安全报告》(附报告全文链接)

CertiK《Hack3d&#xff1a;2024年度安全报告》现已发布&#xff0c;本次报告深入分析了2024年Web3.0领域的安全状况。2024年损失总额超过23亿美元&#xff0c;同比增幅高达31.61%&#xff1b;其中&#xff0c;12月的损失金额最少。过去一年&#xff0c;网络钓鱼攻击和私钥泄露…

AI知识库与用户行为分析:优化用户体验的深度洞察

在当今数字化时代&#xff0c;用户体验&#xff08;UX&#xff09;已成为衡量产品成功与否的关键指标之一。AI知识库作为智能客服系统的重要组成部分&#xff0c;不仅为用户提供快速、准确的信息检索服务&#xff0c;还通过用户行为分析&#xff0c;为产品优化提供了深度洞察。…

Vue3 + ElementPlus动态合并数据相同的单元格(超级详细版)

最近的新项目有个需求需要合并单元列表。ElementPlus 的 Table 提供了合并行或列的方法&#xff0c;可以参考一下https://element-plus.org/zh-CN/component/table.html 但项目中&#xff0c;后台数据返回格式和指定合并是动态且没有规律的&#xff0c;Element 的示例过于简单&…

CSS进阶和SASS

目录 一、CSS进阶 1.1、CSS变量 1.2、CSS属性值的计算过程 1.3、做杯咖啡 1.4、下划线动画 1.5、CSS中的混合模式(Blending) 二、SASS 2.1、Sass的颜色函数 2.2、Sass的扩展(extend)和占位符(%)、混合(Mixin) 2.3、Sass的数学函数 2.4、Sass的模块化开发 2.5、Sass…

概率论与数理统计

概率论占比更多&#xff0c;三分之二左右 数理统计会少一些 事件之间的概率 ab互斥&#xff0c;不是ab独立 古典概型吃高中基础&#xff0c;考的不会很多 条件概率公式&#xff0c;要记 公式不要全记&#xff0c;很多有名称的公式是通过基础公式转换而来的 目的在于解决一…

javaEE-多线程进阶-JUC的常见类

juc:指的是java.util.concurrent包&#xff0c;该包中加载了一些有关的多线程有关的类。 目录 一、Callable接口 FutureTask类 参考代码&#xff1a; 二、ReentrantLock 可重入锁 ReentrantLock和synchronized的区别&#xff1a; 1.ReentantLock还有一个方法&#xff1a…

智慧工地系统:建筑施工智能化管理的全新模式

智慧工地概述 智慧工地是将互联网的理念和和物联网的技术引入建筑工地&#xff0c;依托物联网、互联网、大数据、5G技术&#xff0c;建立云端数据平台&#xff0c;形成大数据的业务体系&#xff0c;打通一线操作与远程监管的链条&#xff0c;实现劳务、安全、环境、材料等各个…

FastAPI 统一接口响应(Json)模板的使用示例

目录 FastAPI 统一接口响应&#xff08;Json&#xff09;模板的使用示例 实际案例 实现方法 1. 创建统一响应格式的中间件 2. 将中间件添加到 FastAPI 应用中 3. 解释代码 4. 扩展和定制 5. 测试 FastAPI 统一接口响应&#xff08;Json&#xff09;模板的使用示例 实际…

Linux平台下实现的小程序-进度条

目录 1.换行、回车概念 2.缓冲区 2.1缓冲区 2.2强制刷新 3.进度条程序 Makefile文件 ProgressBar.h ProgressBar.c Main.c 执行结果 1.换行、回车概念 /n&#xff1a;换行回车&#xff08;\r&#xff1a;回车&#xff09; 2.缓冲区 如下图在vim编辑器中的命令模式下…

C++ 基础思维导图(一)

目录 1、C基础 IO流 namespace 引用、const inline、函数参数 重载 2、类和对象 类举例 3、 内存管理 new/delete 对象内存分布 内存泄漏 4、继承 继承权限 继承中的构造与析构 菱形继承 1、C基础 IO流 #include <iostream> #include <iomanip> //…

Java - 日志体系_Apache Commons Logging(JCL)日志接口库_桥接Logback 及 源码分析

文章目录 PreApache CommonsApache Commons ProperLogging &#xff08;Apache Commons Logging &#xff09; JCL 集成logbackPOM依赖配置文件 logback.xml使用 源码分析jcl-over-slf4j 的工作原理1. LogFactory 的实现2. SLF4JLogFactory 和 Log 的实例化过程3. SLF4JLog 和 …

中小企业如何进行数字化转型?

​在这个日新月异的数字时代&#xff0c;企业数字化转型已成为不可逆转的潮流与战略选择。大数据、云计算、人工智能、物联网等前沿科技正重塑着各行各业的面貌。面对激烈的市场竞争和不断变化的客户需求&#xff0c;中小企业作为国民经济的重要组成部分&#xff0c;数字化转型…

闪存知识科普-基本储存单元结构

概述&#xff1a; 闪存&#xff0c;即FlashMemory。其基本储存单元&#xff08;Memory Cell&#xff09;如下图所示。看起来有点像N沟道&#xff08;N-Channel&#xff09;MOS管&#xff0c;但比MOS管多一个悬浮闸&#xff08;Floating Gate&#xff09;。悬浮闸内可以储存电荷…

[江科大STM32] 第五集快速建立STM32工程模板——笔记

保存&#xff0c;进去选芯片型号&#xff0c;我们是F10C8T6 一个MD&#xff0c;还有所有.c.h 这里所有文件 这里所有文件

Elasticsearch:基础概念

一、什么是Elasticsearch Elasticsearch是基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产规模工作负载的速度和相关性进行了优化。使用 Elasticsearch 可以近乎实时地搜索、索引、存储和分析各种形状和大小的数据。Elasticsearch 是…

安卓播放器TVbox或影视仓软件如何链接到xiaoya小雅超集?很详细的教程

前言 这里咱们说的安卓播放器软件指的是这个&#xff1a; 还有这个&#xff1a; 这两个软件只是个壳&#xff0c;你需要做的仅仅是把需要的内容填写到对应的位置即可。 开始这个教程之前&#xff0c;你需要先部署好小雅&#xff0c;如果没有部署小雅&#xff0c;这个教程基本…

Datawhale AI冬令营 动手学AI Agent

背景——什么是Agent 在人工智能领域&#xff0c;agent可以指一个能够感知环境并作出决策以实现特定目标的系统。比如&#xff0c;一个聊天机器人&#xff08;chatbot&#xff09;就是一个agent&#xff0c;它能够理解用户的输入并给出相应的回复。 学习目标 学会使用百宝箱平…

如何在IDEA一个窗口中导入多个项目

一般在IDEA窗口中想导入一个新项目&#xff0c;会提示我们在当前窗口还是新窗口。如果选新窗口&#xff0c;就会新打开一个窗口&#xff0c;此时新窗口里面只有新导入的项目。 而为了浏览起来更方便&#xff0c;需要实现在IDEA一个窗口中导入多个项目。具体步骤如下&#xff1…