C++__string

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

文章目录

前言

一、string是什么?

二、string的构造函数

1.string();

2.string(const char * s);

3.string(const string* str ,size_t  pos  ,size_t   len=npos); 

4. string(const char* str ,size_t  pos);

5.string(size_t   n , char  c);

三、string的访问和遍历

1.方括号访问

2.迭代器

总结



前言

本篇文章初步讲解关于string的使用,以及一些比较基础的函数使用。


一、string是什么?

        在C++中,string是一个类模版,其中拥有众多的构造函数。

#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("a");cout << s1[1] << endl;cout << s1[0] << endl;return 0;
}

 

 

二、string的构造函数

1.string();

        无参构造是最为基础的构造函数,也是我们最早使用的的构造函数。

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1;        //无参构造return 0;
}

无参构造的使用为string + 名字;

2.string(const char * s);

        第二个构造函数为带一个常量地址。

        这里我们经常使用的方法为使用一个常量字符串去对其初始化。

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!");return 0;
}

         除以上两种常用的使用方法之外,其实我们平时还常使用对象进行实例化。

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!");string s2(s1);cout << s2 << endl;return 0;
}

 

3.string(const string* str ,size_t  pos  ,size_t   len=npos); 

         这个构造函数的意思呢,这里是我们使用一个对象进行初始化,从字符串的pos位置开始,长度为len,并且len给了一个缺省值。

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!");string s2(s1, 1);cout << s2 << endl;return 0;
}

 

 当我们了解了基础的使用方法后,我们来了解下len的缺省值,npos,

        在C++的官网上,npos的定义为-1

        那么为什么要定义成-1呢?我们来看看size_t是什么,我们知道size_t是Unsigned int,当我们把-1给了无符号的整形,那么它就会变成int的最大值。但是我们使用npos作为长度的话,肯定会太长了,所以C++中就规定了,当len>字符串的长度时,这时就将字符串全部取了。 

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!");string s2(s1, 1,100000);cout << s2 << endl;return 0;
}

 

 

4. string(const char* str ,size_t  pos);

这个构造函数的作用为,我们使用一个常量字符串进行初始化,但是我们只取这个字符串pos位置前的字符进行初始化。

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!",4);cout << s1 << endl;return 0;
}

 

5.string(size_t   n , char  c);

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1(2, 'a');cout << s1 << endl;return 0;
}

 

         这里的size_t代表了我们将使用多少个字符c对对象进行初始化。

三、string的访问和遍历

 关于string的访问和遍历,我们来讲讲两种方法:

1.方括号[]

2.迭代器

1.方括号访问

在C++中对于string类的字符数组我们同样可以使用方括号来进行访问,

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!");cout << s1[0] << endl;return 0;
}

 

它们的访问和数组的访问是相同的。 

2.迭代器

大家可能都听说过迭代器,在我们刚学C++的时候,我们常用的都是方括号的方式进行数据的访问,但是并不是所有的数据都是可以使用方括号来进行访问的,其实我们最为常用的访问数据的方法还是迭代器,那么迭代器是怎么使用的呢?

迭代器:iterator

#include<string>
#include<iostream>
using namespace std;
int main()
{string s1("hello bit!");string::iterator it = s1.begin();while (it != s1.end()){cout << *it <<' ';it++;}return 0;
}

 

 迭代器访问下一个位置都是对iterator进行++,通过迭代器,我们可以快速的访问,遍历数据,这里的iterator可以理解为我们将数组的第一个元素的指针给给了iterator,我们通过指针进行访问数据,但实际到底是不是指针,我们尚未知晓,不同的编译器有所不同。


总结

关于string的使用我们在了解了其部分的函数后,我们对于其他的函数也是可以快速的上手的,对于迭代器的使用,我推荐我们平常还是常用迭代器的好,毕竟不是所有的数据都能使用方括号来进行访问。

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

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

相关文章

【数据结构】10道经典面试题目带你玩转链表

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.移除链表元素 二.反转链表 三.链表的中间结点 四.链表中倒数第K个结点 五.合并两个有序链表 六.链表分割 七.链表的回文结构 八.相交链表 九.环形链表 一.移…

【心得】PHP文件包含基本利用个人笔记

本文可能比较凌乱&#xff0c;快速总结保证自己看得懂&#xff08;真.个人笔记&#xff09; 文件包含的本质&#xff1a;代码复用、并行开发、模块化、增加移植性 include和eval的区别&#xff1a; include和eval一样&#xff0c;都不是函数&#xff0c;都是语言结构&#xf…

聊聊近些年 CPU 在微架构、IO 速率上的演进过程

大家好&#xff0c;我是飞哥&#xff01; 在上一篇《深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则&#xff0c;以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。 不少同学开始问我其它型号的 CPU…

遗传算法GA-算法原理与算法流程图

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一、遗传算法流程图 1.1. 遗传算法流程图 二、遗传算法的思想与机制 2.1 遗传算法的思想 2.2 遗传算法的机制介绍 三、 遗传算法的算法流程 3.1 遗传算法的算法…

一文总结MySQL的指令是如何工作的

当你输入一条MySQL指令时候有没有想过会发生什么&#xff1f; 建立连接 首先你得先连到数据库上才行&#xff0c;这又分为长连接和短链接&#xff0c;短链接就是你查询一次就断开连接&#xff0c;长连接是你可以多次查询直到主动断开连接&#xff08;也可能被杀死进程&#x…

4.3每日一题(知全微分求函数本身)

公式 1、先通过公式&#xff1a;dx前系数对y求偏导、dy前面的系数对x求偏导&#xff0c;求出 f(x)的表达式&#xff1b;对x求不定积分&#xff0c;再通过 f(0)0求出常数C&#xff0c;即可求出 f(x) 2、把F(x)的全微分列出来&#xff0c;dx、dy前面的表达式分别为F(x)偏x、y的…

移动端路径传参以数字的形式,写死的情况

页面1 async getListTransferAndApprova() { //把mark值拼接到路径的后面&#xff0c;定义一个变量&#xff0c;使得切换穿的mark都不一样let mark ;if (this.tabsCurrent 0) {mark 2;} else if (this.tabsCurrent 1) {mark 3;}else if (this.tabsCurrent 2) {mark 4;}…

IDEO也不行了吗?设计正在变革#实时设计

2023 年 8 月&#xff0c;在与宜家品牌合作近 10 年之后&#xff0c;SPACE10 关门了。 最近&#xff0c;IDEO&#xff0c;设计思维的早期倡导者和践行者&#xff0c;宣布裁员1/3。 介绍下这两家设计公司&#xff1a; SPACE10 由宜家全额资助&#xff0c;于 2015 年落户哥本哈根…

微信小程序开发学习——页面布局、初始导航栏与跳转

1.盒模型 要求实现效果如图所示&#xff1a; 所有WXML元素都可以看作盒子&#xff0c;在WXSS中"box model”这一术语是用来设计和布局时使用盒模型本质上是一个盒子&#xff0c;封装周围的WXML元素它包括: 边距&#xff0c;边框&#xff0c;填充和实际内容&#xff0c;模…

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)

FULL OUTER JOIN 除了前面讲到的 INNER JOIN&#xff08;内连接&#xff09;、LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;&#xff0c;还有另外一种关联方式&#xff0c;即 FULL OUTER JOIN&#xff08;全外连接&#xff09; FULL O…

C/C++数据结构之堆栈(Stack):理解、实现与运用

当我们讨论堆栈时&#xff0c;我们首先需要了解它的概念和基本原理。堆栈是一种后进先出&#xff08;Last In, First Out&#xff0c;LIFO&#xff09;的数据结构&#xff0c;它的操作主要包括压栈&#xff08;Push&#xff09;和弹栈&#xff08;Pop&#xff09;&#xff0c;以…

webpack 中,filename 和 chunkFilename 的区别

filename filename 是一个很常见的配置&#xff0c;就是对应于 entry 里面的输入文件&#xff0c;经过webpack打包后输出文件的文件名。比如说经过下面的配置&#xff0c;生成出来的文件名为 index.min.js。 chunkFilename chunkFilename 指未被列在 entry 中&#xff0c;却…