当前位置: 首页 > news >正文

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示

【小梦C嘎嘎——启航篇】string 使用😎

  • 前言🙌
    • C语言中的字符串
    • 标准库中的string类
    • string 比较常使用的接口
    • 对上述函数和其他函数的测试代码演示:
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下! 都是精华内容,可不要错过哟!!!😍😍😍

C语言中的字符串

C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可
能还会越界访问。

标准库中的string类

  1. string是表示字符串的字符串类
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;
  4. 不能操作多字节或者变长字符的序列。在使用string类时,必须包含#include头文件以及using namespace std;

string 比较常使用的接口

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

对上述函数和其他函数的测试代码演示:

#include<iostream>
#include<string>
using namespace std;void Teststring1()
{string s1;string s2("hello bit");string s3(s2);string s4(s2.begin(), s2. end());s1 = "abcdef";cout << s1 << endl;cout << s2 << endl;cout << s3 << endl;cout << s4<< endl;}void test_string3()
{string s1("hello world");string s2 = "hello world";for (size_t i = 0; i < s1.size(); i++){cout << s1[i] << " ";}cout << endl;string::iterator it = s1.begin();while (it != s1.end()){cout << *it << " ";it++;}cout << endl;for (auto ch : s2){cout << ch << " ";}cout << endl;
}void func(const string & s)
{//string::const_iterator it = s.begin();//auto it = s.begin();//while (it != s.end())//{//	//*it = 'a';//	cout << *it << " ";//	it++;//}//cout << endl;//string::const_reverse_iterator rit = s.rbegin();/*auto rit = s.rbegin();while (rit != s.rend()){cout << *rit << " ";++rit;}cout << endl;*/auto rit = s.rbegin();while (rit != s.rend()){cout << *rit << " ";++rit;}cout << endl;
}void test_string4()
{string s1("hello world");string s2 = "hello world";func(s1);}void test_string5()
{string s1("hello worldxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyy");string s2(s1);cout << s2 << endl;string s3(s1, 6, 5);cout << s3 << endl;string s4(s1, 6, 3);cout << s4 << endl;string s5(s1, 6);cout << s5 << endl;string s6(s1, 6, s1.size() - 6);cout << s6 << endl;string s7(10, 'a');cout << s7 << endl;string s8(++s7.begin(), --s7.end());cout << s8 << endl;s8 = s7;s8 = "xxx";s8 = 'y';
}void test_string6()
{string s1("hello world");string s2 = "hello world";cout << s1.size() << endl;cout << s1.capacity() << endl;s1.clear();cout << s1.size() << endl;cout << s1.capacity() << endl;}void test_string7()
{string s;/*s.reserve(100);for (auto ch : s){cout << ch << " ";}cout << endl;s.push_back('x');s.push_back('x');s.push_back('x');s.push_back('x');s += 'n';s += "bit helloc";for (auto ch : s){cout << ch;}cout << endl;*///size_t old = s.capacity();//cout << "初始" << s.capacity() << endl;//for (size_t i = 0; i < 100; i++)//{//	s.push_back('x');//	if (s.capacity() != old)//	{//		cout << "扩容:" << s.capacity() << endl;//		old = s.capacity();//	}//}//s.reserve(10);//cout << s.capacity() << endl;s = "hello bit";cout << s.size() << endl;cout << s.capacity() << endl;s.resize(10, 'a');cout << s << endl;cout << s.size() << endl;cout << s.capacity() << endl;}void test_string8()
{string s = "hello";s.append(" bit");cout << s << endl;string s3 = "hello";string s2;s2 = s3 + " bit";cout << s2 << endl;s2 += s2;cout << s2 << endl;//s += '#';//s += "hello";//s += ss;//cout << s << endl;//string ret1 = ss + '#';//string ret2 = ss + "hello";//cout << ret1 << endl;//cout << ret2 << endl;
}void test_string9()
{std::string str("xxxxxxx");std::string base = "The quick brown fox jumps over a lazy dog.";str.assign(base);std::cout << str << '\n';str.assign(base, 5, 10);std::cout << str << '\n';
}void test_string10()
{// 空格替换为20%std::string s2("The quick brown fox jumps over a lazy dog.");string s3;for (auto ch : s2){if (ch != ' '){s3 += ch;}else{s3 += "%20";}}for (auto ch : s3){cout << ch;}cout << endl;printf("s2:%p\n", s2.c_str());printf("s3:%p\n", s3.c_str());swap(s2, s3);//s2.swap(s3);printf("s2:%p\n", s2.c_str());printf("s3:%p\n", s3.c_str());
}void test_string11()
{string s1("test.cpp.tar.zip");//size_t i = s1.find('.');size_t i = s1.rfind('.');string s2 = s1.substr(i);cout << s2 << endl;//string s3("https://legacy.cplusplus.com/reference/string/string/rfind/");//string s3("ftp://www.baidu.com/?tn=65081411_1_oem_dg");string s3("https://leetcode.cn/problems/first-unique-character-in-a-string/submissions/");// 协议      https// 域名      leetcode.cn// 资源名    problems/first-unique-character-in-a-string/submissions/string sub1, sub2, sub3;i = s3.find(':');sub1 = s3.substr(0, i);cout << sub1 << endl;size_t len  = s3.find('/', i + 3);sub2 = s3.substr(i + 3, len - (i + 3));cout << sub2 << endl;sub3 = s3.substr(len + 1);cout << sub3 << endl;
}void test_string12()
{std::string str("Please, replace the vowels in this sentence by asterisks.");std::size_t found = str.find_first_not_of("abc");while (found != std::string::npos){str[found] = '*';found = str.find_first_not_of("abcdefg", found + 1);}std::cout << str << '\n';/*std::string str("Please, replace the vowels in this sentence by asterisks.");std::size_t found = str.find_first_of("abcd");while (found != std::string::npos){str[found] = '*';found = str.find_first_of("abcd", found + 1);}std::cout << str << '\n';*/}int main()
{/*string s1, s2;cin >> s1 >> s2;cout << s1 << endl;cout << s2 << endl;*/string str;//cin >> str;getline(cin, str, '!');cout << str;/*size_t i = str.rfind(' ');if (i != string::npos){cout << str.size() - (i + 1) << endl;}else{cout << str.size() << endl;}*///Teststring1();//test_string2();//test_string3();//test_string4();//test_string5();//test_string6();//test_string7();//test_string8();//test_string9();//test_string11();//test_string12();return 0;
}

总结撒花💞

   本篇文章旨在分享的是string 使用知识。希望大家通过阅读此文有所收获
   😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关文章:

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示

【小梦C嘎嘎——启航篇】string 使用&#x1f60e; 前言&#x1f64c;C语言中的字符串标准库中的string类string 比较常使用的接口对上述函数和其他函数的测试代码演示&#xff1a; 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右…...

多个 Github 账户访问 Github

文章目录 多个 Github 账户访问 Github背景步骤 参考 多个 Github 账户访问 Github 背景 如果我想在这台电脑上同时使用两个 Github 账号怎么办呢&#xff1f; 你主机上的 SSH 公钥只能标识出一个账号。如果需要使用另外一个git账号&#xff0c;访问仓库&#xff0c;你需要创…...

c#实现命令模式

下面是一个使用C#实现命令模式的示例代码&#xff1a; using System; using System.Collections.Generic;// 命令接口 public interface ICommand {void Execute();void Undo(); }// 具体命令&#xff1a;打开文件 public class OpenFileCommand : ICommand {private FileMana…...

Kubernetes的默认调度和自定义调度详解

默认调度和自定义调度详解 默认调度 默认调度是 Kubernetes 中的内置机制&#xff0c;它使用调度器组件来管理分配容器的节点。调度器依据以下原则选择合适的节点&#xff1a; 资源需求 &#xff1a;调度器会为每个 Pod 根据其 CPU 和内存需求选择一个具有足够资源的节点。亲…...

使用Spring-Security后,浏览器不能缓存的问题

Spring-Security在默认情况下是不允许客户端进行缓存的&#xff0c;在使用时可以通过禁用Spring-Security中的cacheControl配置项允许缓存。 protected void configure(HttpSecurity http) throws Exception {// 允许缓存配置http.headers().cacheControl().disable(); }...

中睿天下入选河南省网信系统2023年度网络安全技术支撑单位

近日&#xff0c;河南省委网信办发布了“河南省网信系统2023年度网络安全技术支撑单位名单”&#xff0c;中睿天下凭借出色的网络安全技术能力和优势成功入选。 本次遴选由河南省委网信办会同国家计算机网络与信息安全管理中心河南分中心&#xff08;以下简称安全中心河南分中心…...

代码随想录day44 45 46

这部分的题目主要介绍了完全背包的内容&#xff1b; 主要考虑了两种情况&#xff0c;求组合数还是排列数 先遍历背包&#xff0c;再遍历物品&#xff0c;得到的就是组合数&#xff0c;也就是有顺序 for (int j 0; j < amount; j) { // 遍历背包容量for (int i 0; i <…...

一探Linux下的七大进程状态

文章目录 一、前言二、操作系统学科下的进程状态1、运行状态2、阻塞状态3、挂起状态 三、Linux下的7种进程状态1、运行状态R2、浅度睡眠状态S3、深度睡眠状态D一场有趣的官司 4、停止状态T5、进程跟踪状态t6、死亡状态X7、僵死状态Z —— 两个特殊进程① 僵尸进程② 孤儿进程 四…...

香港站群服务器为什么适合seo优化?

​  香港站群为什么适合seo优化?本文主要从以下四点出发进行原因阐述。 1.香港站群服务器的优势 2.香港站群服务器与国内服务器的对比 3.多IP站群服务器的优势 4.香港站群服务器在SEO优化中的注意事项 1.香港站群服务器的优势 香港站群服务器是为了满足企业SEO优化需求而提供…...

虚拟机内搭建CTFd平台搭建及CTF题库部署,局域网内机器可以访问

一、虚拟机环境搭建 1、安装docker、git、docker-compose ubuntu&#xff1a; sudo apt-get update #更新系统 sudo apt-get -y install docker.io #安装docker sudo apt-get -y install git #安装git sudo apt-get -y install python3-pip #安装pip3 sudo pip install dock…...

qq录屏怎么弄?手把手教会你!

“有没有人知道qq怎么录屏呀&#xff0c;听说qq可以录屏&#xff0c;刚好最近需要录制屏幕&#xff0c;就想用qq去录&#xff0c;但是找了很久&#xff0c;都没找到&#xff0c;有人知道吗&#xff0c;谢谢了。” 在如今数字化时代&#xff0c;屏幕录制已成为广泛使用的工具。…...

一文读懂c++语言

一文读懂C语言 C的发展C的设计目标C的特性C的挑战 C的发展 C是一种通用的、高级的编程语言&#xff0c;它是C语言的扩展。C由Bjarne Stroustrup于1983年首次引入&#xff0c;并在之后的几十年中不断发展壮大。C被广泛应用于各种领域&#xff0c;包括系统开发、游戏开发、嵌入式…...

BERT数据处理,模型,预训练

代码来自李沐老师《动手学pytorch》 在数据处理时&#xff0c;首先执行以下代码 def load_data_wiki(batch_size, max_len):"""加载WikiText-2数据集"""num_workers d2l.get_dataloader_workers()data_dir d2l.download_extract(wikitext-2, w…...

Oracle将与Kubernetes合作推出DevOps解决方案!

导读Oracle想成为云计算领域的巨头&#xff0c;但它不是推出自己品牌的云DevOps软件&#xff0c;而是将与CoreOS在Kubernetes端展开合作。七年前&#xff0c;Oracle想要成为Linux领域的一家重量级公司。于是&#xff0c;Oracle主席拉里埃利森&#xff08;Larry Ellison&#xf…...

微服务与Nacos概述-4

限流规则配置 每次服务重启后 之前配置的限流规则就会被清空因为是内存态的规则对象&#xff0c;所以就要用到Sentinel一个特性ReadableDataSource 获取文件、数据库或者配置中心是限流规则 依赖&#xff1a;spring-cloud-alibaba-sentinel-datasource 通过文件读取限流规则…...

Streamlit 讲解专栏(九):深入探索布局和容器

文章目录 1 前言2 st.sidebar - 在侧边栏增添交互元素2.1 将交互元素添加至侧边栏2.2 示例&#xff1a;在侧边栏添加选择框和单选按钮2.3 特殊元素的注意事项 3 st.columns - 并排布局多元素容器3.1 插入并排布局的容器3.2 嵌套限制 4 st.tabs - 以选项卡形式布局多元素容器4.1…...

使用cloud-int部署nginx

参考 azure创建虚拟机,创建虚拟机注意入站端口规则开放80端口&#xff0c;高级中使用自定义数据&#xff0c;初始化虚拟机&#xff0c;安装nginx 连接CLI&#xff0c;验证是否安装成功 访问虚拟机IP查看是否部署成功 参考文档&#xff1a; https://learn.microsoft.com/zh-cn…...

定量分析计算51单片机复位电路工作原理 怎么计算单片机复位电容和电阻大小

下面画出等效电路图 可以知道单片机内必然有一个电阻RX&#xff0c;为了简化分析&#xff0c;我们假设他是线性电阻&#xff08;不带电容&#xff0c;电感的支路&#xff09; 还有一个基础知识&#xff1a; 电容器的充电放电曲线&#xff1a; 还需要知道电容电压的变化是连续…...

消息队列相关面试题

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 面试题 项目上用过消息队列吗&#xff1f;用过哪些&#xff1f;当初选型基于什么考虑的呢&#xff1f; 面试官心理分析 第一&#xff0…...

33 | 美国总统数据分析

在这个数据分析项目中,利用Pandas等Python库对美国2020年7月22日至2020年8月20日期间的超过75万条捐赠数据进行了深入的探索和分析。通过这一分析,他们揭示了这段时间内美国选民对总统候选人的偏好和捐款情况。以下是对文章中的主要步骤和内容的进一步描述: 数据集处理: 作…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...