C++:STL容器的学习-->string

news2024/12/23 10:57:25

请添加图片描述

C++:STL容器的学习-->string

        • 1. 构造方法
        • 2. string的赋值操作
        • 3. string字符串的拼接
        • 4. string 查找和替换
        • 5. string字符串的比较
        • 6. string字符存取
        • 7. string 插入和删除
        • 8. string截取

需要添加头文件#include <string>

1. 构造方法

string() 创建空的字符串

string(const char *s) 使用字符串s进行初始化

string(const string& str) 使用一个string对象初始化另外一个string对象

string(int n,char c) 使用n个字符c初始化

 int main() {
 
     string str1;
     cout << str1 << endl;
 
     char *a = "hello world!";
     string str2(a);
     cout << str2 << endl;
 
     string str3(str2);
     cout << str3 << endl;
 
     char b = '1';
     string str4(10,b);
     cout << str4 << endl;
 
     return 0;
 }
2. string的赋值操作

string& operator = (const char *s) char*类型字符串赋值给当前的字符串

string& operator = (const string &s) 把字符串s赋值给当前的字符串

string& operator = (char c) 字符赋值给当前的字符串

string& assign(const char *s) 把字符串s赋值给当前的字符串

string& assign(const char *s,int n) 把字符串s的前n个字符赋值给当前的字符串

string& assign(const string &s) 把字符串s赋值给当前字符串

string& assign(int n,char c) 用n个字符c赋值给当前的字符串

int main() {
  
      string str1 = "hello world!";
      cout << str1 << endl;
  
  
      string str2;
      str2 = str1;
      cout << str2 << endl;
  
      string str3;
      str3.assign(str2);
      cout << str3 << endl;
  
      string str4;
      str4.assign(str3,5);
      cout << str4 << endl;
  
      string str5;
      str5.assign(10,'a');
      cout << str5 << endl;
  
      return 0;
  }
3. string字符串的拼接

string& operator+=(const char*str)

string& operator+=(const char c)

string& operator+=(const string& str)

string& append(const char *s) 把字符串s连接到当前字符串结尾

string& append(const char *s,int n) 把字符串s的前n个字符连接到当前字符串结尾

string& append(const string &s)

string& append(const string &s,int pos,int n) 字符串s中从pos开始的n个字符连接到字符串结尾

int main() {
  
      string str1;
      str1 += "hello c++";
      cout << str1 << endl;
  
      string str2 = "hello";
      str2.append(" c++2");
      cout << str2 << endl;
  
      string str3 = "hello";
      str3.append(str1,5,10);
      cout << str3 << endl;
  
      return 0;
  }
4. string 查找和替换

find、rfind找不到目标字符串时返回-1

int find(const string &str,int pos=0) const 查找str第一次出现位置,从pos开始查找

int find(const char *s,int pos=0) const

int find(const char *s,int pos,int n) const 从pos位置查找s的前n个字符第一次位置

int find(const char c,int pos=0) const 查找字符c第一次出现的位置

int rfind(const string &str,int pos=0) const

int rfind(const char *s,int pos=0) const

int rfind(const char *s,int pos,int n) const

int rfind(const char c,int pos=0) const

string& replace(int pos,int n,const string & str) 替换从pos开始的n个字符为字符串str

string& replace(int pos,int n,const char *s) 替换从pos开始的n个字符为字符串s

int main() {

    string str1 = "hello C++ C++";
    int pos = str1.find("C++");
    cout << pos << endl;

    pos = str1.rfind("C++");
    cout << pos << endl;

    cout << str1.replace(6,3,"Python")<< endl;

    return 0;
}
5. string字符串的比较

按字符的ASCII码进行对比
返回 0、1、-1

int compare(const string &s) const 与字符串s进行比较
int compare(const char *s) const 与字符串s进行比较

int main() {

    string str1 = "c++",str2 = "c++";

    cout << str1.compare(str2) << endl;

    return 0;
}
6. string字符存取

string单个字符存取方式有两种

char& operator[](int n) 通过[]方式存取字符

char& at(int n) 通过at方式获取字符


int main() {

    string str1 = "hello world!";
    for (int i = 0; i < str1.size(); ++i) {
        cout << str1[i] << " " << str1.at(i)<<endl;
    }

    str1[0] = 'e';
    str1.at(1) = 'h';
    cout << str1 << endl;

    return 0;
}
7. string 插入和删除

string& insert(int pos,const char *s) 插入字符串

string& insert(int pos,const string& str)

string& insert(int pos,int n,char c) 在指定位置插入n个字符c

string& erase(int pos,int n) 删除从pos开始的n个字符

int main() {

    string str1 = "hello";
    str1.insert(5," C++");
    cout << str1 << endl;

    str1.insert(5,5,'1');
    cout << str1 << endl;

    str1.erase(5,5);
    cout << str1 << endl;

    return 0;
}
8. string截取

string substr(int pos,int n) const 返回由pos开始的n个字符组成的字符串

int main() {

    string str1 = "hello C++";
    cout << str1.substr(5,4) << endl;

    return 0;
}

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

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

相关文章

kafka3.6.1版本学习

kafka目录结构 bin linux系统下可执行脚本文件 bin/windows windows系统下可执行脚本文件 config 配置文件 libs 依赖类库 licenses 许可信息 site-docs 文档 logs 服务日志 启动ZooKeeper 进入Kafka解压缩文件夹的config目录&#xff0c;修改zookeeper.properties配置文件 #t…

深度学习模型在OCR中的可解释性问题与提升探讨

摘要&#xff1a; 随着深度学习技术在光学字符识别&#xff08;OCR&#xff09;领域的广泛应用&#xff0c;人们对深度学习模型的可解释性问题日益关注。本文将探讨OCR中深度学习模型的可解释性概念及其作用&#xff0c;以及如何提高可解释性&#xff0c;使其在实际应用中更可…

企业微信hook接口协议,ipad协议http,语音转文字

语音转文字 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信msgid是int要转文字的语音消息id 请求示例 {"uuid":"a4ea6a39-4b3a-4098-a250-2a07bef57355","msgid":1063645 } 返回示例 {"data&…

App Inventor 2 Encrypt.Security 安全性扩展:MD5哈希,SHA/AES/RSA/BASE64

这是关于App Inventor和Thunkable安全性的扩展&#xff0c;它提供MD5哈希&#xff0c;SHA1和SHA256哈希&#xff0c;AES加密/解密&#xff0c;RSA加密/解密&#xff0c;BASE64编码/解码方法。 权限 此扩展程序不需要任何权限。 事件 OnErrorOccured 抛出任何异常时将触发此事件…

20240527画图-筛选较长、均长、正交的基向量

1. LLM网址和prompt deepseek网址 prompt 请用python写出以下程序&#xff1a; 1、在x属于&#xff08;0&#xff0c;1920&#xff09;、y属于&#xff08;0&#xff0c;1080&#xff09;范围内&#xff0c;随机生成100个点&#xff0c;并画图 2、从这些点中选取3个点&#…

CC1链补充-LazyMap

前言 在我们上一篇中详细分析了CC1链&#xff0c;但是在CC1链中还有一条链就是LazyMap类 1.安装和CC1核心 环境安装的详情可以见上篇CC1分析的第二部分&#xff0c;环境搭建部分 两条不同的路线其实第一步核心都是相同的&#xff0c;执行类都是Tansformer接口和实现类&#…

操作系统 - 进程与线程

进程与线程 考纲内容 进程与线程 进程与线程的基本概念&#xff1b;进程/线程的状态与转换 线程的实现&#xff1b;内核支持的线程&#xff0c;线程库支持的线程 进程与线程的组织与控制 进程间通信&#xff1b;共享内存&#xff0c;消息传递&#xff0c;管道CPU调度与上下文…

VectorDBBench在windows的调试

VectorDBBench在windows的调试 VectorDBBench是一款向量数据库基准测试工具&#xff0c;支持milvus、Zilliz Cloud、Elastic Search、Qdrant Cloud、Weaviate Cloud 、 PgVector、PgVectorRS等&#xff0c;可以测试其QPS、时延、recall。 VectorDBBench是一款使用python编写的…

计算机毕业设计hadoop+spark+hive知识图谱音乐推荐系统 音乐数据分析可视化大屏 音乐爬虫 LSTM情感分析 大数据毕设 深度学习 机器学习

青岛理工大学&#xff08;临沂&#xff09;机械与电子工程系 毕业设计外文翻译 独立于语言的个性化音乐 推荐系统 Personalized Language-Independent Music Recommendation System 设计题目&#xff1a;基于python的音乐推荐系统的分析可视化设计 …

如何连接远程?

在现代信息技术的发展过程中&#xff0c;不同地区之间的远程连接变得日益重要。为了满足不同地区的电脑、设备之间的信息远程通信需求&#xff0c;北京金万维科技有限公司自主研发的【天联】组网产品应运而生。【天联】是一款异地组网内网穿透产品&#xff0c;可以在任何网络环…

C语言 数组——排序算法的函数实现

目录 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序

数据结构(四)双向链表

文章目录 一、概念二、无头双向链表示意图三、操作&#xff08;一&#xff09;定义结构体&#xff08;二&#xff09;创建链表1. 函数定义2. 注意点3. 代码实现 &#xff08;三&#xff09;插入1. 函数定义2. 注意点3. 代码实现 &#xff08;四&#xff09;删除1. 函数定义2. 注…

【Python】 如何在Python中设置环境变量?

基本原理 在Python中&#xff0c;环境变量是一种存储系统或应用程序配置信息的方式&#xff0c;它们可以被操作系统或应用程序访问。环境变量通常用于配置应用程序的行为&#xff0c;例如指定数据库的连接字符串、API密钥、文件路径等。 Python提供了几种方法来设置和访问环境…

最后两天!百度云加速正式停服

百度云加速将于5月30日&#xff0c;正式关闭服务器&#xff0c;仅保留官网首页通知。 届时如网站还在百度云加速接入的&#xff0c;将无法正常访问&#xff01; 如果您还有域名在百度云加速接入的请尽快做迁移安排&#xff0c;以免造成损失。 目前在主机吧购买的域名已经全部…

Flink本地idea运行环境配置webui

Flink本地idea运行环境配置webui 1.添加依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-runtime-web_2.11</artifactId><version>1.13.6</version><scope>provided</scope></dependency&g…

柳宗元,政治坎坷与文学辉煌的交织

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 柳宗元&#xff0c;字子厚&#xff0c;生于唐代宗大历年间&#xff08;公元773年&#xff09;&#xff0c;卒于唐宪宗元和年间&#xff08;公元…

产品公告 | MemFire Cloud认证服务支持微信扫码登录

前言 为了满足国内用户日益增长的操作习惯需求&#xff0c;并进一步提升用户体验&#xff0c;MemFire Cloud认证服务已集成微信扫码登录功能。微信&#xff0c;作为国内广受欢迎的社交平台&#xff0c;其扫码登录功能以其便捷性和快速性赢得了广大用户的青睐。现在&#xff0c…

了不起的学习生产板OrangePiAiPro

一. OrangePi AiPro介绍和初始化配置 介绍 香橙派 orangePiAIpro这个板子其实早在一年前就已经有了大面积推广且应用于各种真实的智能场景中了&#xff0c;比如图像识别&#xff0c;大文本语义解析&#xff0c;语音识别等&#xff0c;今日我也终于下手啦。 因为本人本科是一个嵌…

【C++练级之路】【Lv.22】C++11——右值引用和移动语义

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、右值引用1.1 左值和右值1.2 左值引用和右值引用的范围1.3 左值引用的意义 二、移动语义2.1 移动构造…

感觉是通俗易懂的大模型入门(一)

最近人工智能非常火爆,大家可能经常听到AI、深度学习、大语言模型等名词。但真正能够将它们拆开来细致讲解的内容并不多。我大学就是学这个的,毕业后一直从事这个领域的工作。所以我打算今年陆续做一些这方面的科普,也借此机会复习巩固一下自己的知识体系。 今天就算是第一期,…