C++之 string学习

OOP习题(7) 参见题目描述。参见题目描述。 阅读详情

学习C艹的初衷就是stl与string,这里是重点。

  • string对象的创建
#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1;
    string s2 = "c plus plus";
    string s3 = s2;
    string s4 (5, 's');
    return 0;
}
  • string的一些方法
string s = "http://c.biancheng.net";
int len = s.length();
cout<<len<<endl;
//输入输出是正常的,就是C++语法
  • 转换为C风格的代码
string path = "D:\\demo.txt";
FILE *fp = fopen(path.c_str(), "rt");
  • 字符串的拼接
    第一印象是C的string.h中的strcat,这里啥都不用了,集合了方法。
#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first ";
    string s2 = "second ";
    char *s3 = "third ";
    char s4[] = "fourth ";
    char ch = '@';

    string s5 = s1 + s2;
    string s6 = s1 + s3;
    string s7 = s1 + s4;
    string s8 = s1 + ch;
    
    cout<<s5<<endl<<s6<<endl<<s7<<endl<<s8<<endl;

    return 0;
}

哈哈,字符串可以直接相加,这不就是我以前用的C+嘛???

  • 增删查改

增:

string& insert (size_t pos, const string& str);

很明显,这是string类的一个方法,重载完了,可以按照需要使用,阿门。

删:

string& erase (size_t pos = 0, size_t len = npos);

erase,老橡皮擦了,不需要在C中那样删除后平移加上结束符号,芜湖!
pos 表示要删除的子字符串的起始下标,len 表示要删除子字符串的长度。如果不指明 len 的话,那么直接删除从 pos 到字符串结束处的所有字符(此时 len = str.length - pos)。

  • 提取子字符串
string substr (size_t pos = 0, size_t len = npos) const;

和上面erase差不多,如果pos越界就异常喽,len越界没事,全删除!

  • 字符串查找

find():

size_t find (const string& str, size_t pos = 0) const;
size_t find (const char* s, size_t pos = 0) const;

str和s是查找的字符串,pos自然就是查找开始的角标。

#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first second third";
    string s2 = "second";
    int index = s1.find(s2,5);
    if(index < s1.length())
        cout<<"Found at index : "<< index <<endl;
    else
        cout<<"Not found"<<endl;
    return 0;
}

rfind():
rfind() 和 find() 很类似,同样是在字符串中查找子字符串,不同的是 find() 函数从第二个参数开始往后查找,而 rfind() 函数则最多查找到第二个参数处,如果到了第二个参数所指定的下标还没有找到子字符串,则返回一个无穷大值4294967295。

#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first second third";
    string s2 = "second";
    int index = s1.rfind(s2,6);
    if(index < s1.length())
        cout<<"Found at index : "<< index <<endl;
    else
        cout<<"Not found"<<endl;
    return 0;
}

正好给的6,可以让rfind()方法找到,给5都找不到!

find_first_of() :
find_first_of() 函数用于查找子字符串和字符串共同具有的字符在字符串中首次出现的位置。(说没用吧,有点用,说有用吧,平时用不上。)

#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first second second third";
    string s2 = "asecond";
    int index = s1.find_first_of(s2);
    if(index < s1.length())
        cout<<"Found at index : "<< index <<endl;
    else
        cout<<"Not found"<<endl;
    return 0;
}
  • 总结
    总的来说就是增删查改,取到字符串性质,可以修改为C语言的字符串形式。还有一个鸡肋功能find_first_of(),先不说别的,就这个合并字符串的功能就足够我用它了,因为以前用C#编程,我还是挺习惯的。
    毕竟string只是一个类库,说到底就是集合了char*的类库,装载了很多实用的功能。走,去stl!
C++——list和string C++容器的学习开始啦!大家先来学习list!紧接着string和vector也会一一呈现!大家继续加油吧!这次的模拟实现就到这里啦这些只是建议的模拟,目的是让大家更充分的了解容器的使用如果对于里面一些知识不了解的话,可以看看前面的博客哟大家继续加油吧! 阅读详情

相关推荐

数据资产目录(SailCatalog)和数据地图(SailMap)

笔者接下来准备开发大数据平台(XSailboat)中的数据资产目录(SailCatalog)和数据地图(SailMap)相关的功能,本文用以记录笔者关于此部分功能的概念梳理和主体功能设计。

OkGogooXSailboat的博客 2326

结构体中定义string变量

我编写一个程序,在结构体中定义了一个string类型类型的变量:如下: typedef struct GS_DB_Event_Item_Stru {     string strFieldName;    uint16    usType;    //1    // 1 number, 2 string   union   {     int32  nValue;     char

sooolo的专栏 1万+

[特殊字符] 智能补货(AI-driven Replenishment)完整实施方案

补货量=预测需求+安全库存−当前库存补货量 = 预测需求 + 安全库存 - 当前库存补货量=预测需求+安全库存−当前库存。:基于 LSTM/Transformer 预测未来 30/60/90 天的销量。

nbsaas-boot基于Request-Response的企业级快速开发框架 967

通过指向结构体变量的指针变量输出结构体变量中成员的信息。

解题思路:在已有的基础上,本题要解决两个问题: 怎样对结构体变量成员赋值; 怎样通过指向结构体变量的指针访问结构体变量中成员。 #include <stdio.h> #include <string.h> struct Student{ long int num; char name[15]; char sex; float score; }; int main()...

hey,欢迎浏览我的博客,希望能给你提供帮助。 5012

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1824

基于IC555的PWM信号发生器设计:从原理到电机调速与LED调光应用

脉冲宽度调制(PWM)是一种通过调节数字脉冲宽度来控制模拟信号电平的核心技术,其原理在于固定频率下改变高电平占空比,从而等效调节平均电压或功率。这项技术因其高效率、低损耗的特点,在电机调速、LED调光、开关电源等工程领域具有重要价值。本文聚焦于利用经典IC555定时器芯片构建PWM信号发生器,通过分析其无稳态工作模式及改进型电路设计,实现了占空比独立可调且频率稳定的信号输出。文中结合电机驱动与LED调光等具体应用场景,详细阐述了电路参数计算、元件选型、PCB设计及常见问题排查等实践要点,为电子爱好者与工程师

weixin_30342363的博客 396

PTA 继承第一次实验(选择题解析)

继承第一次实验 2-1 一个类的私有成员 (2分) 只能被该类的成员函数访问 只能被该类的成员函数和友元函数访问 只能被该类的成员函数、友元函数和派生类访问 以上答案都不对 正确答案:B 解析: 派生类中父类的私有成员为不可访问。 2-2 以下关于C++语言中继承的叙述中,错误的是( )。 (2分) 继承是父类和子类之间共享数据和方法的机制 继承定义了一种类与类之间的关系...

好学者的博客 1万+

YOLOv11 改进 - 下采样 | 轻量化突破:ADown 下采样让 YOLOv11 参量减、精度升

本文介绍了一种轻量级的特征下采样模块 ADown,它结合平均池化与最大池化策略,实现更有效的信息保留与压缩。在传统卷积网络中,特征下采样常造成信息损失,而 ADown 通过双通道并行结构优化了下采样效果,提升了模型的表达能力。在 YOLOv11 中引入 ADown 替换原有的下采样模块后,网络在保持高效性的同时,显著提升了目标检测的精度与稳定性。文章详细介绍了 ADown 的核心代码实现、模块注册流程以及 YOLOv11-ADown 模型的配置和训练方法,为轻量化目标检测模型的优化提供了实用参考。

魔改工程师的博客 1479

深入了解C++的string,这一篇就够了

1.简介: string是C++标准库的一个重要的部分,主要用于字符串处理,在使用时,务必添加头文件  。 2.string常用函数: (1)构造函数: 生成一个空字符串str: string str; 拷贝构造函数,生成str的复制品: string s(str); 将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值: string s(str, st...

零碎@流年絮语 的博客 388

Unity之如何实现TTS文本转语音(真人发音)

微软Azure TTS 文本转语音 服务 将文本转换为逼真的语音的语音服务功能 支持个各国语言,各种中文各种方言,支持不同音色男音女音 支持离线和在线版本

TxNet 5478

仿真学习系列(三十):Sigrity设计文件(Altium Designer和Allegro)导入

很多刚接触 Sigrity 的工程师都会产生疑问:Sigrity 功能这么多,是不是门槛很高?我能学得会吗? 其实,Sigrity 的核心并不在“操作难”,而是在“理解仿真背后的机理”。一旦掌握基本流程,你会发现它并没有想象中那么复杂,反而能大大提升你的高速设计能力。本节内容,就是从最简单的一步开始 —— 把你的设计文件正确导入 Sigrity。

案例文章,高速信号 520

学习笔记—C++—string(一)

为什么学习string的类 ● C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。 ● 在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string类,很少有人去使用C库中的字符串操作函数 ● string是一个管理字符数组的类

2401_83231468的博客 2371

YOLOv8性能提升:引入华为GhostNetv1特征提取网络

本文提出一种轻量化改进方案,将GhostNetV1作为YOLOv8的主干网络,以提升移动端部署效率。通过Ghost模块的两步特征生成机制(初级卷积+廉价操作),显著降低了30%的计算量(FLOPs)和参数量,精度损失控制在1%以内。实验表明,改进后的模型在骁龙865芯片上推理速度提升25%。核心创新包括:1)用GhostBottleneck替换CSP模块;2)保留FPN+PAN结构确保多尺度检测能力;3)提供完整的PyTorch实现方案。该工作为资源受限场景的目标检测提供了实用解决方案,未来可结合注意力机制

shrgegrb的博客 1180

C++学习笔记——string

和是C++11的两个语法。

ajole的博客 1158

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【C++ Primer Plus学习记录】字符串——C-style string

字符串是存储在内存的连续字节中的一系列字符。C++处理字符串的方式有两种:1.来自C语言,常被称为C-风格字符串(C-style string)特殊的性质:以空字符结尾,空字符被写作\0,其ASCII码为0,用来标记字符串的结尾。上述两个数组都是char数组,但是只有第二个数组是字符串。在cat数组示例中,将数组初始化为字符串的工作看上去冗长乏味——使用大量单引号,且必须记住加上空字符。用引号括起的字符串隐式地包括结尾的空字符,因此不用显式地包括它。

qq_39072304的博客 293

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++ STL学习——string

当我们一开始使用C语言来处理字符串的时候,会感觉非常的麻烦。C语言中缺少相应的字符串处理函数,如果想要实现某个字符串功能,只能靠我们自己来实现。但是当来到C++中,字符串的处理就会变得异常简单。今天我们就来学习一下C++中最高频的字符串处理函数。示例代码上传至:https://github.com/chenyufeng1991/CppString。      首先要引入C++中的字符串头文件:#i

乞力马扎罗的雪CYF的博客 3326

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

CPP学习之string类的讲解

string类的讲解总结 C++学习过程就是一次看不懂,几次懵懵懂懂,最后写得多了,才能看点门道的。着过程前期还是比较难受的,后面有点顿悟的感觉,也是不错。 C++的字符串与C有很大的不同,首先C中是char*类型,而在C++中变成了string类型 //C char* str = "caizi"; //C++ string str = "caizi"; string str("caizi2"); 在C中对字符串的操作就是对str指针操作,增删改查都是在内存上进行操作的,非常高的自由度,但就是容易引起内存

weixin_43654653的博客 2418

c++学习笔记_string操作

【代码】c++学习笔记_string操作。

编程驴子的博客 785

【C++课程学习】:string的模拟实现

🔍通过对string的模拟实现,可以对string有更深的理解和认识,大概知道底层的逻辑,以后出现什么问题可以更好的解决。对学习以后的容器也有很大的帮助。

路虽远,行则将至!事虽难,做则必成! 5388

C++学习之STL学习:string类使用

我们很明显地发现:s2是不能修改的因为它们的调用关系是这样的//遍历+修改//下标+[]s1[0]++;/*s2[0]++;s1[8];//函数调用相当于s1.1operator[](8)//越界检查s1[20];return 0;题目:初始做法(不通过)在VS上调试可以发现s并没有包括T这是为什么呢?因为scanf和cin输入多个值的时候,默认空格和换行是多个数值的分隔,无法读取空格之后的内容。

2401_89119815的博客 1620

C++String的学习

说明:在上述代码中String类里面没有显示实现拷贝构造函数和赋值运算符重载,当s1取赋值s2的时候编译器就会走默认的拷贝构造函数,那么s1和s2就会指向同一个地址空间,当其中一个地址空间被销毁了之后,另外一个以为还存在,则会以为有效,当运行时就会出现报错,(在释放时同一块空间被释放多次而引起程序崩溃),这就是上述的浅拷贝。C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想(即。,后来这个不重要了。

bw2810592402的博客 900

C++学习之string函数

C++学习之string函数 c++头文件 #include<string> 输入: string str1; char ch; cin>>str1; //只能处理不带空格的一行输入 getline(cin, str1); //可以读入带有空格的用户输入 ch = cin.get(); //或cin.get(ch); //只能获取一个字符 cin.get();...

墨夜之枫的博客 352

【C++强基篇】学习C++就看这篇--->STL之string使用及实现

本篇博客详细介绍了string的使用及实现,对于重要接口进行了剖根问底的解释,看完你定有收获!

熬夜秃顶中...... 1931

【C++学习】STL容器——string

【C++学习】STL容器——string

weixin_44906102的博客 629

C++ string 学习

C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结<引用> 一,C语言的字符串 在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。 比如下面这个例子: //example 1: char str[12] = "Hello"; char *p = str; *p

海乐学习 334

【C++】STL学习之旅——初识STL,认识string类

本文介绍了C++中的STL库,并初步讲解了string类

叫我龙翔的博客 2028
上一篇: 碎碎念
下一篇: C++与我的甜蜜第二天
Neepu_G.job
博客等级 码龄8年 7粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值