00:01
那么我们来看一下字符串相关的一些函数,其实有些函数呢,我们在前面已经对不对讲过了,只是在再回顾一下。我们字符串常用的函数呢,有这么一些拷贝。连接计算字符串的大小,字符串的比较,对,就是比较两个字符串是否相等,如果说呃相同呢,就返回一个零,对,如果S1,注意看啊,如果S1大于零呢,就返回一个零,如果S1小于S2,就这两个字符串相比啊,那么就返回一个小于零的数。那么怎么判断谁大谁小呢?它默认让每个字符串对应的那个字符进行比较啊,按照它的一个阿斯克玛值来进行比较。那么还有一个string。HR,这个是干什么呢?返回一个指针指向字符串S1,就这个S1啊。
01:03
中字符CH出现的第一次位置,说白了就是返回在一个字符串中的某一个字符第一次出现的位置,你比如说我有一个hello。我有个哈喽字符串,我想看看这个哈,字符串里面第一次出现O这个字符,它所在的位置。对,这样子就可以返回,那么还有一个string string,这是返回一个指针,指向字符串S1中字符串S2第一次出现的位置,前面是统计一个字符出现的位置,下面是统计一个子串出现的位置,明白了吧,你比如说我有一个哈。汤姆哈,汤姆这个字符串明白,那么我想看一看这个字符串中,汤姆就是这个汤姆,它是在我们这个S1这个串中出现的,第一次出现的位置就可以用string string来进行这个统计。好,那现在这样子,我们举一个最简单的例子,让大家看一下结果是什么就可以了。好吧,其实听并不难,我们来看一下就OK。
02:13
那同学们,我们再举一个小案例,先把这个案例呢注销一下。对,把这个呢,我们也注销一下好吧。啊,注销一下。好,咱们继续啊,继续往下面来,继续举一个案例,这个是我们字符串的第四一个案例了。Char。是。OK,那现在呢,我们仍然把这个CPP换一下名。来引入include std。贸易的主函数对不对?然后呢,这我们复制一下,我们看一下这个结果就可以。格式化一下。
03:01
呃,这里面我们是需要引入一个头文件,哪个头文件啊,String h。对不对,这个头文件引进去下面就OK了,那么看一下这有个hello,这有个word,这是一个空的,就是什么都没赋赋值的一个。呃,一个字符,那现在我们来看一下这个会感受到拷贝把S1。的内容拷贝到SS3中,那么此时此刻S3的内容就是什么呢?它的内容啊,它的内容其实就是hello了,这个能理解吧。OK,那么现在这输出,呃,显然就是hello啊,我们这儿可以待会可以看到这地方输出一个hello。然后这是连接,把S2和S1进行相连,那这个相连会S1原先本身有一个hello。对不对,然后呢,再把S2给它连起来,那显然这边应该返回一个什么呢?Hello word是这样子吧,这有一个hello。
04:03
对,然后呢,看看它这有有没有空格,没有空格的话就是连在一起的,就hello word。那这样在统计S1的一个长度,那S1的长度在哪里呢?S1是不是这个,但是现在因为它呃已经进行的连接,因此它的总长度呢,就应该是这块。一共几几个字符啊,一上面有五个,下面有五个,一共十个。这边就应该是十对不对,好,这返回一个零,因为我这里是VO的,因此呢,这个返回就可以不要了,我们输出一下这个结果get try一下。来运行之。我们看看运行的结果跟我们想的是否一样。哥们想的是否一样?好运行起来。好运起来,过后呢,我们可以看到跟老师分析的一样,一个hello,一个是hello word10正确,那呃,另外几个方法呢,同学们自己去测试一下就可以了,并不难来,我们现在呢,把字符串或者叫字符数组的使用注意事项跟细节再聊一聊,其实这里面有很多注意事项和细节,老师在前面已经讲过了,只在给大家整理一下。
05:18
程序中往往是依靠检测斜杠零的位置来判断字符串是否结束是不是,而不是根据字数组的长度来决定它的长度。比如说呃,你本身是十个,但是在输出的时候呢,你如果你没有给到足够的值,它以斜杠零为结束符,明白这个意思哈。第二点,在定义字符数组时,应估计实际的长度,保证数组长度始终大于字符串实际的长度,否则在输出时可能出现未知的符号,这个什么意思呢?就这个意思,同学们。就是,呃,打个比方吧,比如说我们这样附一个字符串,大家看会有什么后果,比如说我这里有个字符串这样子的,OK,是一个三对,如果你这边就给个ABC,那就比较危险,为什么?因为你ABC3个已经把他的空间占完了,那系统就没有办法再给一个斜杠零,就这意思,所以说你在这呢,其实给一个。
06:19
Ad就可以了,明白这意思吧,所以说他说的就是这个意思,应该给它留出一个呃空间,让它放斜杠零。第三一点,同学们看系统对字符串的常量呢,会自动加一个斜杠零,做一节束符,比如说你这写了个c program,共有九个字符,对不对?那么但实际上占用的是十个字节,为什么呢?因为它最后会自动给你加一个斜杠零,也占用一个字节。对,这个最后一个斜杠尼是系统这种添加的,这个呢可以通过三二来看,实际上就是你这写你你比如说你给了一个字符串常量,看起来是九个字符,但实际上你用set of来看呢,它是十个字节。
07:02
就这意思。最后,定义字符数组时,如果给定的字符个数比数组的长度小。那么系统呢,会默认将剩余的元素空间全部设置为斜杠里。举个例子,比如说我在这里写了一个字符数组,叫string,我有六个空间,我只占用了两个,那么我告诉大家,后面还有四个全部都写成了斜杠零。啊,实际上实际上在输出的时候呢,他第一次遇到这个斜杠里就结束了,明白这个意思吧,好,这是同学们需要知道的。那么最后呢,还有几个方式,我们来看看会分别输出什么,我们字符数组定义和初始化的方式比较多,那么有这么些都可以用啊,甚至还有这个也可以,对不对?还有这个心对吧?P string这个也可以,在前面咱们也说过了,比如说写个hello都可以,那么我们来看哪几种形式是可以的,哪几种形式是不能使用的好不好,我们来看一下。
08:04
那同学们,那现在呢,我们再举一个小案例吧,对,再举一个小案例,那么这个呢,是我们字符数组的第五个案例,字符A5。好吧,那这边呢,我们这把这个CP换成一个C。没问题,然后呢,找一个include std。对吧,然后V的主函数,然后我们看看哪些能够正确输出,哪些又不能正确正常输出,为什么看一下。来吧,我们玩一把。我们玩一把。呃,为了好看的我的那个七杠零好不好,十卷一。STRING1奔跑S,我们看看哪些是OK的。那为了好看就是get char先问同学们,第一个可不可以?这个是可以的,因为这个时候其实啊,这个时候我实际上是直接把一个字符串常量付给他的,明白吧,这是可以的,因此这个输出呢是正确的,我们执行一下。
09:03
把前面这个先注销一把,OK。那同学们,我们运行。我们运行一下,运行这边会输出m happy,不会有乱码。不会有乱码,好,诶这个应该是这块没有关闭的原因,咱再来运行一下。在此呢,我们看看输出是是不是m happy。我们可以看到没问题,第二个再来输出第二个。第二个使俊二。那么十均二同学们可以看到,此时此刻,我这直接给的是一个字符串常量,这个肯定也是可以的,这个我就不去测了,好吧,我们再看第三个是进三,然后呢,我默认以这种方式单个单个单个单个的给字符速度,这个是不可以的,这个地方会有乱码,也就是说我们输出第三个字符串的时候呢,它会出现乱码。哎,这会有乱码。
10:01
没问题吧,这块有乱码,我们来看一下。这个地方为什么会有乱码乱码呢?因为你其实把所有空间都占完了,你没有多余的空间让他加这个,你看这地方会说I'm是一一堆这种乱七八糟东西是不是好,这不可以的。好,我们再来看第四一个可不可以呢?第四一个可不可以看五个12345没有,你其实都占用完了,占用它这个呢,系统是不会默认加的。说这个地方也会有五个,那有有的人说老师下我们来看看啊,是不是会有乱码。来输出十最四。这个地方呢,本身我们期望它输出参,但是实际上看看会有什么问题呢。同学们看运行制。那运营起来过后呢,我们发现哈,China后面确实也出现了那么一堆更多哈,那那有些同学说老师我少给一个可不可以呢。大家觉得可不可以,你有五个空间,但是我只给了四个空间,还留了一个空间,那么留了这个空间,系统会不会自动加一个呢?我们来看一下,走起来。
11:10
我们看看会不会啊,会不会我们加一个。那这个时候我们可以看到诶。对,这个又没有关闭,不好意思再来运行一下。那运行我们看看有没有。有没有呢?OK,我们看channel。你看。是不是后面相当于默认加了一个斜杠零呢?哎,就这意思,因为你的空间怎么样呢?还有剩余吗?不是前面讲过吗?但是你刚才这样写是不可以的,你这样写哦,徐哥,哎,那你要没有机会再给你分了,你用完了吗?对,这个可不可以,这个肯定是可以的,好,这个我就不去讲解了,好同学们,那这个呢就说完了,最后还有一道题,我们看一下,同学们看这道题这样做可不可以,我先定了一个字符串数组,没有指定大小,然后我给它分配一个m happy可不可以,显然这个是错误的。
12:02
错误为什么呢?因为因为这个施俊是一个常量啊,常量是不可以修改地址的,因此你这样去运行呢,直接是错的,我们可以看是不是来各位同学,我们放这放这一下,你们看一下直接报错是吧,这。好,这个的确是错误的。好,同学们,那关于这块的一个梳理呢,我们就到此,我们把笔记跟大家整理一下,我们看一下这块讲的是什么内容,这块呢给大家讲了一下字符串相关的函数。走起来。字符串相关的函数是在这儿常用的字符串函数的一览。对不对,这一呢,然后呢,这边是有一个表格。然后这边是我们常用的一些函数,同学们呢,可以去一个一个的试用一下,好吧,啊这边为了让同学们有个理解呢,我这举了举了一个案例。举了一个案例,简单的说了一下一些函数的使用对不对?
13:04
那函数使用呢?应该是在这块,诶在这边我拿过来吧。在这是不是有个案例,我们把这个呢,给它注销一下。是这吧,给各位朋友板书到这里。好,插入一个表格。对,那这个说完了以后,是不是给大家讲了一下字符串和数组在使用的时候有一个注意事项和细节。对吧,这细节呢,有哪些呢,有这么多。对,有这么几个。给大家板书到笔记中。来一个吧。插入一个,那这个细节说完了以后呢,我们是不是还有还有这块说法,就是字符串,字符数组定义和初始化的哪些方式可以,哪些方式不行,对这个呢,我们也给大家板书到这里来。第五一个。那这里面呢,有个案例,这个案例实际上是在这讲的,对不对?好这边呢,我给大家阐述到这里来,其实这一块核心点在哪里呢?核心其实还是要回归到我们先前讲的。
14:11
各种不同方式,这个字符在内存里面的一个布局情况,你理解这个了,那这个题就是同学们看到这个题就没有什么难度,最后呢,我们是不是还做了一个小练习啊呃,这小练习,然后呢,再再巩固了一下这块的内容。那这个练习就在这好,我们说这个是错误的。对,插入一个表格就OK了。好的同学们,那关于我们字符串的内容呢,我们就讲解到这里,下面呢,就是一会儿呢,我们下一个视频给大家讲解排序和查找,好各位这一讲我们就讲解到这里,关于字符串内容比较的绕,或者说相对比较难一点,请同学们认真的理解,然后呢,多做把老师想写的这个代码,还有还有这一几个示意图,好好的理解一下好的。
我来说两句