标准库中的String类 String(C++)【4】

文章目录

  • String常用的接口(黑框标记的是常用接口)
    • 字符串的运算
      • `c_str`:
      • `data`:
      • `get_allocator`:
      • `find`:
      • `substr`:
      • `rfind`:
      • `find_first_of`:
      • `find_last_of`:
      • `find_first_not_of`:
      • `find_first_not_of`:

String常用的接口(黑框标记的是常用接口)

字符串的运算

在这里插入图片描述

c_str:

返回一个指向数组的指针,该数组包含一个以空结尾的字符序列(即C-string),表示字符串对象的当前值

c_str()方法返回一个指向字符数组的指针,这个数组包含了字符串的所有字符,并且是以空字符\0结尾的。这个函数通常用来将std::string的内容转换成C风格的字符串,以便于和那些期望C风格字符串的API进行交互。

因为C++和C语言是兼容的,那么在C++中就不妨会用到C的库或者文件,所以通过其转变内容风格,帮助我们更好的兼容C语言

void TestString1()
{string s1("hello world");string filename("test.cpp");FILE* fout = fopen(filename.c_str,"r");
}

在这里插入图片描述

data:

返回一个指向数组的指针,该数组所包含的字符序列与构成字符串对象值的字符序列相同

datac_str的用法类似,只不过data是早期版本


在这里插入图片描述

get_allocator:

返回与该字符串关联的分配器对象的副本

而allocator是内存池的意思,内存池提高内存申请效率,但是这里我不详细说,而这里std::get_allocator 是 C++ 标准库中的一个函数,它用于获取一个容器的默认分配器。这个函数通常与容器模板一起使用,比如 std::vectorstd::list 等。默认分配器是一个对象,它定义了如何分配和释放内存。


在这里插入图片描述

find:

在字符串中搜索由其参数指定的序列的第一次出现
2.size_t find (const char* s, size_t pos = 0) const;&&3.size_t find (const char* s, size_t pos, size_t n) const;
找到第一次出现的s的字符串
4.size_t find (char c, size_t pos = 0) const;
找到第一次出现的c字符

void TestString4()
{string url("https://www.baidu.com/");size_t goal = url.find("baidu");cout << goal << endl;
}

在这里插入图片描述

substr:

返回一个新构造的字符串对象,其值初始化为此对象的子字符串的副本

void TestString2()
{string s1("text.cpp");size_t pos1 = s1.find('.');if (pos1 != string::npos){string suffix = s1.substr(pos1);cout << suffix << endl;}else{cout << "没有后缀" << endl;}
}

在这里插入图片描述

rfind:

在字符串中搜索由其参数指定的序列的最后一次出现,和find一样则是找第一个字符但是rfind是从后往前找

void TestString3()
{string s1("text.c.tar.zip");size_t pos1 = s1.rfind('.');if (pos1 != string::npos){string suffix = s1.substr(pos1);cout << suffix << endl;}else{cout << "没有后缀" << endl;}
}

和上面类似找文件后缀,而在Linux下就会有这种情况,那么用rfind正好


在这里插入图片描述

find_first_of:

在字符串中搜索与参数中指定的任何字符匹配的第一个字符

find_last_of:

在字符串中搜索与参数中指定的任何字符匹配的最后一个字符

find_first_not_of:

在字符串中搜索第一个与参数中指定的任何字符不匹配的字符

find_first_not_of:

在字符串中搜索与参数中指定的任何字符不匹配的最后一个字符

find_first_not_of为例实现一个找到字母“aeiou”将其替换成‘*’的程序

void TestString5()
{string str("When pos is specified, the search only includes characters at or before position pos, ignoring any possible occurrences after pos.");cout << str << endl;size_t found = str.find_first_not_of("aeiou");while (found != string::npos){str[found] = '*';found = str.find_first_not_of("aeiou",found+1);}cout << str << endl;
}

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

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

相关文章

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折

同志们&#xff0c;云服务器行业大内圈&#xff0c;腾讯云各个活动都已开始卷中卷&#xff0c;我整理一下各个活动&#xff0c;加油冲了 【腾讯云】 爆款2核2G3M云服务器首年 61元&#xff0c;叠加红包再享折上折&#xff0c;最低只要51 【腾讯云】多款热门AI产品新春巨惠&…

在 SpringBoot3 中使用 Mybatis-Plus 报错

在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…

ios xcode 15 PrivacyInfo.xcprivacy 隐私清单

1.需要升级mac os系统到13 兼容 xcode 15.1 2.升级mac os系统到14 兼容 xcode 15.3 3.选择 New File 4.直接搜索 privacy 能看到有个App Privacy 5.右击Add Row 7.直接选 Label Types 8.选中继续添加就能添加你的隐私清单了 苹果官网文档Describing data use in privacy man…

亚马逊使用什么国外代理IP?跨境电商代理IP推荐

代理IP作为网络活动的有力工具&#xff0c;同时也是跨境电商的必备神器。亚马逊作为跨境电商的头部平台&#xff0c;吸引了大量的跨境电商玩家入驻&#xff0c;想要做好亚马逊&#xff0c;养号、测评都需要代理IP的帮助。那么应该使用什么代理IP呢&#xff1f;如何使用&#xf…

SpringBoot【问题 05】PostgreSQL数据库启用SSL后使用默认配置进行数据库连接(Navicat工具与Java程序)

官网SSL说明&#xff1a;https://www.postgresql.org/docs/9.1/libpq-ssl.html 1.配置 1.1 文件 使用SSL需要的4个文件&#xff0c;名称要一致&#xff1a; 客户端密钥&#xff1a;postgresql.keyJava客户端密钥&#xff1a;postgresql.pk8客户端证书&#xff1a;postgresq…

每日OJ题_牛客_井字棋

目录 牛客_井字棋 解析代码 牛客_井字棋 井字棋__牛客网 解析代码 class Board {public:bool checkWon(vector<vector<int> > board) {// 当前玩家是否胜出&#xff01;&#xff01;&#xff01;不是有玩家胜出int row board.size(), col board[0].size();fo…

全球IT外包的趋势与发展

随着全球化进程的不断深化&#xff0c;IT外包已经成为众多企业的关键战略之一。IT外包是将企业的信息技术需求委托给第三方服务提供商&#xff0c;以在成本、效率和核心业务专注方面取得优势。在全球化的大背景下&#xff0c;IT外包的发展呈现出一系列新的趋势。 首先&#xff…

仿牛客网项目---消息队列的实现

本篇文章讲一讲我们的项目中用到的消息队列。 1.阻塞队列 2.kafka 我的项目为什么要用消息队列&#xff1f; 如果采用消息队列&#xff0c;那么评论、点赞、关注三类不同的事&#xff0c;可以定义三类不同的主题&#xff08;评论、点赞、关注&#xff09;&#xff0c;发生相应…

Linux系统编程(六)高级IO

目录 1. 阻塞和非阻塞 IO 2. IO 多路转接&#xff08;select、poll、epoll&#xff09; 3. 存储映射 IO&#xff08;mmap&#xff09; 4. 文件锁&#xff08;fcntl、lockf、flock&#xff09; 5. 管道实例 - 池类算法 1. 阻塞和非阻塞 IO 阻塞 IO&#xff1a;会等待操作的…

Leetcode148 排序链表

排序链表 题解1 线性表题解2 自顶向下归并排序题解3 自底向上归并排序 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回排序后的链表 。 题解1 线性表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* L…

[项目设计] 从零实现的高并发内存池(五)

&#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[高并发内存池] ❤️ 前置学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 ​ 目录 8 使用定长内存池脱离new 9. 释放对象时不传大小 10.性能优化 10.1…

程序地址空间

引入 看这样一段代码 1 #include<stdio.h>2 #include<unistd.h>3 #include<stdlib.h>4 5 int g_val 100;6 int main()7 {8 pid_t id fork();9 if(id0)10 {11 int cnt 0;12 while(1)13 {14 printf("child,pid:%d,ppid:%d,g_val:%d,&g_v…