字符和字符串的理解

1、 C语言中:针对单个字符的处理,使用char类型; 而针对字符串,使用字符数组来存储和处理字符串,以 \0 结尾;其中字符串的长度为有效字符,不包括 \0 。字符数组的长度处理要看是字符还是字符串!

        (1)C风格字符串,只要是使用双引号“ ”的,都会以 \0 结束,就是说在结尾会多出一个字符。

        (2)凡是数组没有指名大小的定义,全部都会以赋值号右边的初始化长度作为数组默认大小。

             例子:(1)字符串 "abcd" 长度为4,是因为字符串长度指的是字符串中有效字符的个数,不包含C风格结束符\0;

                       (2)而字符串数组a[]="abcd"长度为5,因为这个是算的数组的长度,也就是所占用的存储空间,当然要包含\0结束符(它也要占用存储空间);

                       (3)a[10]= "abcd" 的长度为10,因为你显示指定了字符数组的长度,所占内存当然就是10,它的存储空间是连续的,也就是说,10个字符空间中,前面分别是a,b,c,d 和结束符\0,后面全部都是

                                 0(被初始化了),总共有5个0,加上前面的abcd和结束符\0,一共10个,他们的存储是连续的; 

                      (4)a[ ]= {'a','b','c','d'} ,你没有按照双引号定义,因此不算C风格字符串,只是一个字符数组。而又没有指名大小,则它的大小等于初始化的长度,这里就是4,sizeof也等于4,没有结束符\0了。

2、C++中: 针对字符的处理,仍然用 char类型; 而针对字符串,也可以按照C语言一样使用字符数组;也可以使用 string 类,包含头文件#include<string> 使用。

           顾名思义,string是一个类,所以它声明的是对象,对象可以像指针一样操作; 同样字符串的长度不包括尾部的\0;

           例子:

                    (1) string str;   cin>>str;   cout<<str<<str[1];   可以整体输入输出字符串,也可以输出单个字符str[1]。
                    (2) string str[10];   可以输入10个字符串,相当于一个字符串数组,每个数组元素存放一个字符串;
                              cin>>str[0];   
                              cout<<str;     和数组相同,这里输出的是首地址(因为数组名,代表数组的首地址)。

                    (3) char str;         只能输入一个字符。
                    (4) char str[10];   可以输入一个字符串,但是长度小于10;
                              cin>>str;   
                              cout<<str<<str[1];   可以整体输入输出字符串,也可以输出单个字符str[1]。
         字符指针和字符名称,可以单个也可以整个输出。
 
3、C++的string类中,有很多针对字符串操作的函数,可以方便我们使用,遇到了以后慢慢添加。string str;
     (1)str.erase(0,n)  ;删除从0开始的n个字符;
     (2)str.insert    :插入函数
 
posted @ 2019-04-25 10:54  hw_zh  阅读(738)  评论(0编辑  收藏  举报