深入解析 C++ 中的字符数组和处理字符串的方法

栏目: C++ · 发布时间: 7年前

内容简介:这篇文章主要介绍了深入解析C++中的字符数组和处理字符串的方法,需要的朋友可以参考下

C++字符数组

用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。

字符数组的定义和初始化

定义字符数组的方法与前面介绍的类似。例如:

上面定义了c为字符数组,包含10个元素。在赋值以后数组的状态如图所示。

深入解析 C++ 中的字符数组和处理字符串的方法
对字符数组进行初始化,最容易理解的方式是逐个字符赋给数组中各元素。如

把10个字符分别赋给c[0]~c[9]这10个元素。

如果花括号中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如:

也可以定义和初始化一个二维字符数组,如

代码如下:

字符数组的赋值与引用

只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值。如:

如果已定义了a和b是具有相同类型和长度的数组,且b数组已被初始化,请分析:

【例】设计和输出一个钻石图形。

深入解析 C++ 中的字符数组和处理字符串的方法

C++处理字符串的方法—字符串类与字符串变量

用字符数组来存放字符串并不是最理想和最安全的方法。

C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。

实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。
字符串变量的定义和引用

1) 定义字符串变量

和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变量要用类名string。如:

应当注意:要使用string类的功能时,必须在本文件的开头将C++标准库中的string头文件包含进来,即应加上

2) 对字符串变量的赋值

在定义了字符串变量后,可以用赋值语句对它赋予一个字符串常量,如:

既可以用字符串常量给字符串变量赋值,也可以用一个字符串变量给另一个字符串变量赋值。如:

不要求string2和string1长度相同,假如string2原来是″China″,string1原来是″Canada″,赋值后string2也变成″Canada″。在定义字符串变量时不需指定长度,长度随其中的字符串长度而改变。

可以对字符串变量中某一字符进行操作,如:

3) 字符串变量的输入输出

可以在输入输出语句中用字符串变量名,输入输出字符串,如:

字符串变量的运算

在上一节中可以看到: 在以字符数组存放字符串时,字符串的运算要用字符串函数,如strcat(连接)、strcmp(比较)、strcpy(复制),而对string类对象,可以不用这些函数,而直接用简单的运算符。

1) 字符串复制用赋值号

其作用与“strcpy(string1,string2);”相同。

2) 字符串连接用加号

连接后string1为″C++ Language″。

3) 字符串比较直接用关系运算符

可以直接用 ==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等关系运算符来进行字符串的比较。

不仅可以用string定义字符串变量,也可以用string定义字符串数组。如:

此时name数组的状况如图所示。

深入解析 C++ 中的字符数组和处理字符串的方法
关于字符串数组的几点说明:

在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一个元素重新赋值,其长度就可能发生变化。

在字符串数组的每一个元素中存放一个字符串,而不是一个字符,这是字符串数组与字符数组的区别。如果用字符数组存放字符串,一个元素只能存放一个字符,用一个一维字符数组存放一个字符串。

每一个字符串元素中只包含字符串本身的字符而不包括′\0′。

可见用字符串数组存放字符串以及对字符串进行处理是很方便的。

在定义字符串数组时怎样给数组分配存储空间呢?实际上,编译系统为每一个字符串变量分配4个字节,在这个存储单元中,并不是直接存放字符串本身,而是存放字符串的地址。在本例中,就是把字符串″Zhang″的地址存放在name[0],把字符串″Li″ 的地址存放在name[1],把字符串″Fun″的地址存放在name[2]……上只是一个示意图。在字符串变量中存放的是字符串的指针(字符串的地址)。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具