字符数组和字符串变量string的区别
string不是c++语言的基本类型(char,int,float,double等),它是c++标准库中声明的一个字符串类,想要完整使用其功能需要头文件#include< string>(自己去空格)
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
int main()
{
(1)定义
char *c1="I love C";//把字符串常量赋值给字符串指针
//char c2[20];
//c2="I love C++";错误,字符数组不能先定义再赋值
char c2[11]="I love C++";//定义十个长度不够,字符数组c2末尾有\0,即c2一共有11个字节
cout<<*(c1+7)<<"\n";
cout<<c2[7]<<endl;
(2)赋值
string s1="I love C!";//不需指定长度,其长度随字符串长度改变
string s2;// 字符串变量可以先定义再赋值
s2="I love C++!";//字符串变量s2末尾没有\0,即s2一共有10个字节
string s3=s2; //等价于strcpy(s3,s2);
string s4;
(3)输入输出
cin>>s4;//string类(字符串变量)可以直接输入,但是字符数组不行
cout<<c1<<endl;
cout<<s4<<endl;//输出操作一样,输出字符串变量名和字符数组名即可
(4)运算
cout<<strcat(c2,c1)<<endl; //字符数组连接要求前面的长度不小于后面,然后返回值是前一个字符数组的地址
cout<<s1+s2<<endl;//字符串变量直接用加号相加即可,没啥限制
//字符串比较直接用关系运算符
//1.s1完全等于s2,则s1==s2;
//2.s1与s2不完全相同,则比较第一对不同字符的ASCII码,较小的字符所在的串为较小的串
//3.s1的长度n1小于s2的长度n2,且两字符串前n1个字符都相同,则s1<s2;
(5)字符串数组
string name[5]={"aass","bb","ccrr","ddffff","ee"};
//字符串数组,每一个元素都是字符串变量,
//且每个字符串变量长度可以不一样,因为每个元素存的不是字符串本身,而是字符串首地址
//char c2[11]="I love C++";字符数组,每一个元素都是字符;
cout<<sizeof(name); //32位系统下应输出20(4*5);
}