1)字符串是一种特殊的字符数组。
char b[]={"hello"};
char b[]="hello";
//两种都是合法的。
2)使用字符串形式可以简化赋初值,同时在进行输入输出的时候可以不需要使用循环语句来完成。
char array[]="welcome";
cout<<arrry<<endl;//可直接打印出整个字符串
3)字符串的长度是其中字符的数目再加1,因为其包含了结束符\0,而字符数组的长度就是其中字符的数目。blog:
sizeof与strlen
char a[]="welcome";
char b[]={'w','e','l','c','o','m','e'};
int la,lb;
la=sizeof(a)/sizeof(char);//长度为8
lb=sizeof(b)/sizeof(char);//长度为7
4)函数strlen(),gets(),puts()。
strlen()函数的功能是计算字符串的实际长度(不包含字符串的结束标志\0)。当用户用cin输入的字符串中含有空格时,strlen()计算不了空格后的字符数,cin默认以空格作为字符结束的标志。而这在实际应用中是不合理的。
char str[100];
int len;
cin>>str;
len=strlen(str);
//如果输入是Hello World。那么len的结果是5,而不是11。
使用gets()函数能输入带空格的字符串,而且能被编译器完整接收,并准确计算长度。而cin只有空格前的串能被接收。因些当字符串本身包含空格时,建议使用gets()输入,puts()输出。不使用cin()和cout()。
#include<iostream>
using namespace std;
int main(){
char str1[100],str2[100];
int len;
cout<<“输入字符串(gets方式):”;
gets(str2);
cout<<“字符串为:”<<endl;
puts(str2);
len=strlen(str2);
cout<<"字符串长度为:"<<len<<endl;
cout<<endl;
cout<<"输入字符串(cin方式):"<<endl;
cin>>str1;
cout<<“字符串为:”<<str1<<endl;
len=strlen(str1);
cout<<"字符串长度为:"<<len<<endl;
system("pause");
return 0;
}
/*
gets方式:
Hello world
Hello world
11
cin方式:
Hello world
Hello
5
*/
对于二维字符串数组,则
char name[5][20];
cout<<"请输入5个名字:"<<endl;
for(int i=0;i<5;i++)
gets(name[i]);
5)字符串处理函数
strcmp(字符串数组名1,字符串数组名2)
功能:按照ASCII码值的顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
取值:
字符串1=字符串2,返回0;
字符串1>字符串2,返回值大于0;
字符串1<字符串2,返回值小于0.
strcpy(字符串数组名1,字符串数组名2)
功能:把字符串2复制到字符串1.
字符串是一个字符数组,因此就有数组的局限性,不能用一个字符串给另外的一字符串赋值。如以下语句是错误的:
char name[20];
name = "Jason";
而可以用以下方法:
方法1:
char name[20];
strcpy(name,"jason");
方法2:char a[]="welcome";
方法3:char b[]={'w','e','l','c','o','m','e'};
strcat(字符串数组名1,字符串数组名2)
功能:c++的字符串是一种特殊的字符数组,不能通过“+”来实现两个字符串的连接。
strcat的功能就是把字符串2中的字符串连接到字符串1后面,并删去字符串1中的"\0"。
返回值:
字符串1的首地址。