深入解析C++中的字符数组和处理字符串的方法
作者:goldensun 发布时间:[ 2016/12/27 10:52:46 ] 推荐标签:数组 字符串
	  C++字符数组
	  用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。
	  字符数组的定义和初始化
	  定义字符数组的方法与前面介绍的类似。例如:
	  char c[10];
	  c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;
	  上面定义了c为字符数组,包含10个元素。在赋值以后数组的状态如图所示。
	
	  对字符数组进行初始化,容易理解的方式是逐个字符赋给数组中各元素。如
	  char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};
	  把10个字符分别赋给c[0]~c[9]这10个元素。
	  如果花括号中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如:
	  char c[]={'I',' ','a','m',' ','h','a','p','p','y'};
	  也可以定义和初始化一个二维字符数组,如
	  代码如下:
	  char diamond[5][5]={{' ',' ','*'},{' ', '*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
	  字符数组的赋值与引用
	  只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值。如:
	  char c[5];
	  c={'C','h','i','n','a'}; //错误,不能对整个数组一次赋值
	  c[0]='C'; c[1]='h';c[2]='i';c[3]='n';c[4]='a'; //对数组元素赋值,正确
	  如果已定义了a和b是具有相同类型和长度的数组,且b数组已被初始化,请分析:
	  a=b; //错误,不能对整个数组整体赋值
	  a[0]=b[0]; //正确,引用数组元素
	  【例】设计和输出一个钻石图形。
	  #include <iostream>
	  using namespace std;
	  void main( )
	  {
	  char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
	  int i,j;
	  for (i=0;i<5;i++)
	  {
	  for (j=0;j<5;j++)
	  cout<<diamond[i][j]; //逐个引用数组元素,每次输出一个字符
	  cout<<endl;
	  }
	  }
	
	  C++处理字符串的方法—字符串类与字符串变量
	  用字符数组来存放字符串并不是理想和安全的方法。
	  C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这是字符串变量——用一个名字代表一个字符序列。
	  实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。
	  字符串变量的定义和引用
	  1) 定义字符串变量
	  和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变量要用类名string。如:
	  string string1; //定义string1为字符串变量
	  string string2=″China″; //定义string2同时对其初始化
	  应当注意:要使用string类的功能时,必须在本文件的开头将C++标准库中的string头文件包含进来,即应加上
	  #include <string> //注意头文件名不是string.h
	  2) 对字符串变量的赋值
	  在定义了字符串变量后,可以用赋值语句对它赋予一个字符串常量,如:
	  string1=″Canada″;
	  既可以用字符串常量给字符串变量赋值,也可以用一个字符串变量给另一个字符串变量赋值。如:
	  string2=string1; //假设string2和string1均已定义为字符串变量
	  不要求string2和string1长度相同,假如string2原来是″China″,string1原来是″Canada″,赋值后string2也变成″Canada″。在定义字符串变量时不需指定长度,长度随其中的字符串长度而改变。
	  可以对字符串变量中某一字符进行操作,如:
	  string word=″Then″; //定义并初始化字符串变量word
	  word[2]=′a′; //修改序号为2的字符,修改后word的值为″Than″
	
 
					
 
			 
								 
								 
								 
								 
								 
								 
								 
								 
								 
								 
					 
				 sales@spasvo.com
sales@spasvo.com
