字符数组集合

一、字符数组的定义

定义:用来存放字符数据的数组是字符数组,字符数组中的每个元素(每个元素占一个字节)都是一个字符

char 数组名 [常量];                        语法上与数值型数组相同。

二、字符数组的初始化

与数值型数组的初始化相同,取其相应字符的ASCII值,

char c[3]={'a','b','c'};                        C++中每个单字符用一对单引号‘’括住。

唯一不同:如果是部分赋值,对于数值数组来说,未赋值的元素自动赋为0;而对于字符数组来说,,未赋值的元素自动赋为空字符'\0'.(对应的ASCII码为0)

三、字符数组的引用

与数值数组相同。

void main()
{
char a[3]={'a','b','c'}
 for(int i=0;i<3;i++)
    cout<<a[i];
}

四、C语言中对字符串的处理(重点)

C语言将字符串作为字符数组来处理。

字符串常量:"CHINA",在计算机中被处理成一个字符型一维数组,数组的最后一个元素为空字符’\0'。长度为5的字符串常量“CHINA"占用6个字节。C语言中约定用'\0'作为字符串的结束标志,它占内存空间,但不计入串长度。有了结束标志'\0'后,程序往往根据它来判断字符串是否结束,而不是根据定义时设定的长度。

1.C语言中对字符串的一般定义方法

一般,C语言将字符串存入一个字符数组,便于后续处理。

可以用字符串的形式为字符数组赋初值。如:

char a[ 11]={"I am a boy "};        或者  char a[ 11]="I am a boy ";         //10个字符占11个字节,末尾自动加'\0'(空格也是一个字符)

如果数组定义的长度大于字符串的长度,后面均加'\0'。(部分赋值,未赋值元素自动为'\0'

2.字符串与字符数组的一些区别

字符串数组后面多一个'\0'。

字符数组的定义和初始化:char c[ ]={'a','b','c'};   char c[3]={'a','b','c'};   char c[5]={'a','b','c'};   

字符串数组的定义和初始化:char a[ ]={"I am a boy "};  char a[ ]="I am a boy ";  char a[ 11]="I am a boy ";

注意: char a[ 10]="I am a boy ";         //错误,至少需要11个字节的空间。

char a[ 10]='I am a boy ';         //错误,字符串必须要用双引号。

3.字符串的输入和输出

cin ,cout,可以用数组名

提醒cin把空格当作分隔符,故cin只能输入一个单词,不能输入带空格的字符串

int main() {
	char s1[3];
	cin >> s1;
	cout << s1;
	return 0;
}

当输入的一行作为一个字符串送到字符数组,且字符串中有空格时,要使用函数cin.getlline()

cin.getline(数组名,允许输入的最多字符个数)

int main(){
char s3[80];
cin.getline(s3, 80);    //输入
cout <<"s3=" << s3;        //输出到'\0'为止
}

当输入行中的字符个数小于80时,将实际输入的字符串(不包括换行符)全部送给s3;当输入行中的字符个数大于80时,只取前面的80个字符送给字符串。

4.多个字符串的一般处理方法

用途:用于处理多个字符串,比如学生名单。

C语言中一般采用二维字符数组来处理。

e.g.  char a[2][10]={"zhang san","li si"}; 

2表示字符串个数,10表示字符串最大长度,{   }表示每行一个字符串。

每个字符串通过数组第一维下标来引用,字符串中的字符用第一维和第二维结合起来引用

e.g. a[0]  "zhang san"                a[1]  "li si"

a[0][1]: 'z'                                a[1][1]:'l'                        a[1][3]='s'

int main()
{char names[3][20];
for(int i=0;i<3;i++)
cin.getline(names[i], 20);
for (int i = 0; i < 3; i++)
	cout << i << '\t' << names[i]<<endl;
}

二维字符串:cin.getline(a[i],20);

再次提醒,在语句中字符数组不能用赋值语句整体赋值。(可以定义数组,在开辟空间时赋初值)

5.字符串处理函数

C语言中没有对字符串变量进行赋值,合并,比较等运算符,但提供了许多字符串处理函数,使用这些函数时,必须在使用之前包含头文件#include<string>或者<string.h>

常用的字符串处理函数:

(1)合并两个字符串:stract(str1,str2)

(2)复制字符串:strcpy(str1,str2)

(3)比较两个字符串:strcmp(str1,str2)

( 4)求字符串长度:strlen(str)

(5)大写字母变小写字母:strlwr(str)

(6)小写字母变大写字母:strupr(str)

#include<iostream>
#include<string>
using namespace std;
int main()
{
	char str1[20] = { "I am a" };    //str1的空间要足够容纳新字符串
	char str2[10] = { " boy" };
	strcat(str1, str2);        //strcat(str1, boy);
	cout << str1<<endl;    //输出I am a boy
    cout<<str2;        //输出 boy
	return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
	char str1[20] = { "I am a" };
	char str3[20];
	strcpy(str3,str1);       
	cout<<str3<<endl;         //输出I am a
   return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
	char str1[20] = { "I am a" };
	cout<<strlen(str1)<<endl;        //输出6(不包括'\0')
	return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
	char str2[10] = { " boy" };
	cout<<strupr(str2)<<endl;        //输出 BOY
	return 0;
}

总结:字符串赋值方法:初始化赋值,或用函数strcpy

两个字符串的比较函数strcmp(str1,str2),函数对字符串中的逐个两两比较,直至遇到不同的字符或者时'\0'为止。该函数具有返回值,返回值由两个字符串对应的字符相减而得。(相等:0;大于:1;小于:-1.)

#include<iostream>
#include<string>
using namespace std;
int main()
{
  char a[]="china";
  char b[]="chinb";
  char c[]="ahica";
  char d[]="chinad";
  cout<<strcmp(a,b)<<endl;
  cout<<strcmp(c,b)<<endl;
   cout<<strcmp(d,c)<<endl;
}

C++处理字符串的方法

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

实际上,string并不是C++与亚伯本身具有的基本类型,它是在C++标准库中声明的一个字符串,用这种类可以定义对象。

一、字符串变量的定义和引用

1.定义字符串变量

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

string a;                //定义a

string a="china";                //定义a并初始化。

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

2.对字符串变量赋值

string a,b;

a="china";                //用常量赋值。

b=a;                //用变量赋值。

3.字符串中字符的引用

string a="then";

a[2]='a';                //最后结果than。

4.字符串变量的输入和输出

cin>>a;                //注意,这种输入方法,键盘输入不能有空格。

cout<<a;

二、字符串变量的运算

1.字符串复制用赋值

string a,b;

a=b;                //字符数组不能这么用。

2.字符串连接用加号

string a,b;

a="C++";

b="Language";

a=a+b;                //a="C++Language"。

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

=        >        <        !=        >=        <=

三、字符串数组

string name[5];        //定义了一个字符串数组,它包含5个元素。

(1)字符串数组中的每个元素相当于一个字符串变量。

(2)每个字符串元素中只包含字符串本身而不包括空字符。

归纳:C++处理字符串数组有2种方法:(1)C string        (2)string类。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值