一、什么是string
string是一个类,类似于java中的String类。利用string类可以定义其对应的string对象
注意:
- 要使用string类要引入库
- string首字母s就是小写,不要大写,和java不一样
二、如何定义string对象
string str;
三、初始化string对象
(一)在定义的时候就初始化
string str = "I love China";
(二)定义完后初始化
string str;
str = "I love China";
注意:如果字符串只是声明了没有初始化,则默认值是"";
四、给string对象赋值
(一)用字符串常量给string对象赋值
string str;
str = "I love China";
(二)用一个string对象给另一个对象string对象赋值
string str1, str2;
str1 = "I love China";
str2 = str1;
(三)用字符数组给string对象赋值
char arr[] = "I love China";
string str;
str = arr;
(四)调用assign方法进行赋值
1、用一个string对象给另一个string对象赋值
(1)函数原型
string& assign(const String &s);
(2)示例
string str1, str2;
str1 = "I love China";
str2.assign(str1);
2、用一个字符数组给string对象赋值
(1)函数原型
string& assign(const char *);
(2)示例
string str;
strs.assign("I love China");
3、用一个字符数组的前n项给string对象赋值
(1)函数原型
string& assign(const char *, int n);
(2)示例
string str1, str2;
str1 = "I love China";
str2.assign(str1, 6);
I love
4、用n个字符给string对象赋值
(1)函数原型
string& assign(int n, char c);
(2)示例
string str;
str.assign(6,'6');
五、string对象的拼接
(一)利用”+“进行拼接
1、拼接一个字符数组
string str = "I";
str += " love China";
2、拼接一个字符
string str = "I";
str += 'm';
3、拼接一个string对象
string str1 = "I", str2 = " love China";
str1 += str2;
(二)利用append方法进行拼接
1、拼接一个string对象
(1)函数原型
basic_string &append( const basic_string &str );
(2)示例
string str1 = "I", str2 = " love China";
str1.append(str2);
2、拼接另一个string对象某个一部分字符
(1)函数原型
basic_string &append( const basic_string &str, size_type index, size_type len );
(2)示例
string str1 = "I", str2 = " love China";
str1.append(str2, 5, 6);
3、拼接一个字符数组
(1)函数原型
basic_string &append( const char *str );
(2)示例
string str1 = "I";
str1.append(" love China");
4、拼接一个字符数组的前n项
(1)函数原型
basic_string &append( const char *str, size_type num );
(2)示例
string str1 = "I";
str1.append(" love China", 5);
六、字符串的查找
(一)返回str在字符串中第一次出现的位置(从index开始查找)*。*如果没找到则返回string::npos
1、函数原型
size_type find( const basic_string &str, size_type index );
size_type find( const char *str, size_type index );
注意:index可缺省,缺省默认从0开始找
2、示例
string str1 = "I love China";
int pos;
pos = str1.find("love China");
cout << pos <<endl;
(二)返回str在字符串中第一次出现的位置(从index开始查找,长度为length)。如果没找到就返回string::npos
1、函数原型
size_type find( const char *str, size_type index, size_type length );
注意:index可缺省,缺省默认从0开始找
2、示例
(三)返回字符ch在字符串中第一次出现的位置(从index开始查找)。如果没找到就返回string::npos
注意:index可缺省,缺省默认从0开始找
1、函数原型
size_type find( char ch, size_type index );
2、示例
七、字符串的替换
(一)将本字符串中,从index开始的num个字符用字符串str替换
1、函数原型
basic_string &replace( size_type index, size_type num, const basic_string &str );
2、示例
string str1 = "I love China, wwwww", str2 = "ChengDu";
str1.replace(7,5,str2);
cout << str1 <<endl;
I love ChengDu, wwwww
八、string对象的比较
(一)比较方式
按照字符的ASCII码进行比较,默认从两个字符串的0下标开始,逐个比较
(二)比较结果
1、如果第一个字符串小于第二个字符串,返回:-1
2、如果两个字符串相等,返回:0
3、如果第一个字符串大于第二个字符串,返回:1
(三)将两个字符串的所有字符进行比较
1、函数原型
int compare( const basic_string &str );
int compare( const char *str );
2、示例
string str1 = "I love China, wwwww", str2 = "I love Chengdu";
int res = str1.compare(str2);
cout << res <<endl;
1
九、字符串中字符的访问
(一)访问
1、通过"[]"进行访问
string str = "I love China, wwwww";
cout << str[7] <<endl;
C
2、通过at方法进行访问
string str = "I love China, wwwww";
cout << str.at(7) <<endl;
C
(二)修改
1、通过"[]"进行修改
string str = "I love China, wwwww";
str[0] = 'i';
cout << str <<endl;
i love China, wwwww
2、通过at方法进行修改
string str = "I love China, wwwww";
str.at(0) = 'i';
cout << str <<endl;
i love China, wwwww
十、string对象插入和删除字符、字符串
(一)插入
1、插入字符串
(1)函数原型
basic_string &insert( size_type index, const basic_string &str );
basic_string &insert( size_type index, const char *str );
(2)示例
string str = "I love China";
str.insert(2, "do ");
cout << str <<endl;
I do love China
2、在指定的位置插入n个字符ch
(1)函数原型
basic_string &insert( size_type index, size_type num, char ch );
(2)示例
string str = "I love China";
str.insert(2, 3, 'd');
cout << str <<endl;
I dddlove China
(二)删除
1、删除从index索引开始的num个字符, 返回*this.
(1)函数原型
basic_string &erase( size_type index = 0, size_type num = npos );
(2)示例
string str = "I love China";
str.erase(2, 5);
cout << str <<endl;
I China
2、删除pos指向的字符, 返回指向下一个字符的迭代器
(1)函数原型
iterator erase( iterator pos );
(2)示例
3、删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置
(1)函数原型
iterator erase( iterator start, iterator end );
(2)示例
十一、获取string对象子串
返回从index开始的num个字符组成的字符串
(一)函数原型
basic_string substr( size_type index, size_type num = npos );
(二)示例
string str = "I love China";
string sub = str.substr(7, 5);
cout << sub <<endl;
China
注意:如果num没有指定,则默认返回从index开始到字符串结尾的所有字符组成的字符串(不包含结束符)