string是在C++标准模板库中的数据类型,string类型的对象用来存放字符串,且不用担心字符串越界问题,头文件为<string>
1、定义string对象
string 变量名;
(1)
string s1,s2; //定义对象s1,s2,没有初始化,
string s3="hello" //定义对象并初始化
cin>>s1>>s2; //输入:abc defg
cout<<s1<<' '<<s2<<' '<<s3<<endl; //输出:hello abc defg
(2)string对象数组的定义
string str1[]={"ab","abc"}; //等同于string str1[2]={"ab","abc"};
string str2[3]; //如果不初始化,必须指定string对象数组的长度;
cin>>str2[0]>>str2[1]>>str2[2]; //输入: a bc defg
cout<<str1[1]<<str2[0]<<endl; 输出:abc a
2、string对象字符串的长度
string s="abcd"
string ch[2]={"ac","abc"};
int s_size=s.size(); //或int s_size=s.length(),表示字符串s的长度
int ch[0]_size=ch[0].size(); //字符串数组ch[0]的长度
printf("s_size=%d,ch[0]_size=%d",s_size,ch[0]_size);
3、string 对象运算
string 对象之间可以用 <、<=、==、>=、> 运算符进行比较,还可以用+
将两个 string 对象相加、将一个字符串常量和 string 对象相加、将一个字符数组和 string 对象相加,相当于进行字符串连接。+=
运算符也适用于 string 对象。string 对象在比较大小时是按词典序比较的,而且是大小写相关的。由于大写字母的 ASCII 码小于小写字母的 ASCII 码('A' ~ 'Z' 的 ASCII 码是 0x41 ~ 0x5a,'a' ~ 'z' 的 ASCII 码是 0x61 ~ 0x7a),所以 Zbc 比 abc 小。此外,string 对象还可以通过[]
运算符和下标存取字符串中的某个字符。例如:
string s1 = "123", s2 = "abc11", s3; //s3是空串,s3==""
s3 = sl + s2; //s3 变成"123abc"
s3 += "de"; //s3 变成"123abcde"
bool b = s1 < s3; //b 为 true
char c = s1[2]; //c变成'3'(下标从0开始计算)
s1[2] = '5'; //s1 变成”125"
4、string取子字符串
string s="abcd"
string s1=s.substr(1,2); //取字符串s从下标1开始,长度为2的子字符串,即s1="bc";
5、string类型字符串转换为char类型字符串
string ss="abcd"
char ch[10];
strcpy(ch,ss.c_str()); //c_str()函数把string类型字符串转换为char类型字符串,然后复制到char类型字符串数组中;