3.1 string容器
3.1.1 string基本概念
本质:string是C++风格的字符串,而string本质上是一个类
string和char*区别:
1、char*是一个指针
2、string是一个类,类内封装了char*,管理这个字符串,是一个char*型的容器。
特点:string类内封装了很多成员方法,如查找(find),拷贝(copy),删除(delete),替换(replace),插入(insert);string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责
3.1.2 string构造函数
构造函数原型:
string(); //创建一个空的字符串 例如:string str;
string(const char* s); //使用字符串s初始化
string(const string& str); //使用一个string对象初始化另一个string对象
string(int n,char c); //使用n个字符c初始化
#include<iostream> using namespace std; #include <string> //string构造函数 /* string(); //创建一个空的字符串 例如:string str; string(const char* s); //使用字符串s初始化 string(const string& str); //使用一个string对象初始化另一个string对象 string(int n,char c); //使用n个字符c初始化 */ void test1() { string s1; //默认构造 const char* str = "hello world"; string s2(str); cout << "s2 = " << s2 << endl; string s3(s2); cout << "s3 = " << s3 << endl; string s4(10, 'a'); cout << "s4 = " << s4 << endl; } int main() { test1(); system("pause"); return 0; }
3.1.3 string赋值操作
给string赋值,operator=用的比较多,比较实用
赋值的原函数:
string& operator=(const char* s); //char*类型字符串 赋值给当前字符串
string& operator=(const string &s); //把字符串s赋给当前的字符串
string& operator=(char c); //字符赋值给当前的字符串
string& assign(const char *s); //把字符串s赋给当前的字符串
string& assign(const char *s, int n); //把字符串s的前n个字符赋给当前的字符串
string& assign(const string &s); //把字符串s赋给当前的字符串
string& assign(int n,char c); //用n个字符c赋给当前字符串
#include<iostream> using namespace std; #include <string> //string赋值操作 /* string& operator=(const char* s); //char*类型字符串 赋值给当前字符串 string& operator=(const string &s); //把字符串s赋给当前的字符串 string& operator=(char c); //字符赋值给当前的字符串 string& assign(const char *s); //把字符串s赋给当前的字符串 string& assign(const char *s, int n); //把字符串s的前n个字符赋给当前的字符串 string& assign(const string &s); //把字符串s赋给当前的字符串 string& assign(int n,char c); //用n个字符c赋给当前字符串 */ void test1() { string str1; str1 = "hello world!"; cout << "str1 = " << str1 << endl; string str2; str2 = str1; cout << "str2 = " << str2 << endl; string str3; str3 = 'a'; cout << "str3 = " << str3 << endl; string str4; str4.assign("hello C++"); cout << "str4 = " << str4 << endl; string str5; str5.assign("hello C++", 5); cout << "str5 = " << str5 << endl; string str6; str6.assign(str5); cout << "str6 = " << str6 << endl; string str7; str7.assign(5, 'w'); cout << "str7 = " << str7 << endl; } int main() { test1(); system("pause"); return 0; }
3.1.4 string字符串拼接
实现在字符串末尾拼接字符串
函数原型:
string& operator+=(const char* str); //重载+=操作符
string& operator+=(const char c); //重载+=操作符
string& operator+=(const string& str); //重载+=操作符
string& append(const char *s); //把字符串s连接到当前字符串结尾
string& append(const char *s, int n); //把字符串s的前n个字符赋连接到当前的字符结尾串
string& append(const string &s); //同operator+=(const string& str);
string& append(const string& s, int pos, int n); //字符串s中从pos开始的n个字符连接到当前字符串结尾
#include<iostream> using namespace std; #include <string> //string字符串拼接 /* string& operator+=(const char* str); //重载+=操作符 string& operator+=(const char c); //重载+=操作符 string& operator+=(const string& str); //重载+=操作符 string& append(const char *s); //把字符串s连接到当前字符串结尾 string& append(const char *s, int n); //把字符串s的前n个字符赋连接到当前的字符结尾串 string& append(const string &s); //同operator+=(const string& str); string& append(const string& s, int pos, int n); //字符串s中从pos开始的n个字符连接到当前字符串结尾 */ void test1() { string str1 = "我"; str1 += "爱玩游戏"; cout << "str1 = " << str1 << endl; str1 += ':'; cout << "str1 = " << str1 << endl; string str2 = "LOL DNF"; str1 += str2; cout << "str1 = " << str1 << endl; string str3 = "I"; str3.append(" love "); cout << "str3 = " << str3 << endl; str3.append("game abcde", 5); //I love game cout << "str3 = " << str3 << endl; //str3.append(str2); //cout << "str3 = " << str3 << endl; //I love game LOL DNF //str3.append(str2, 0, 3); //cout << "str3 = " << str3 << endl; //I love game LOL str3.append(str2, 4, 3); //I love game DNF //参数1:要截取的字符串 参数2:从哪个位置开始截取 参数3:要截取的字符个数 cout << "str3 = " << str3 << endl; } int main() { test1(); system("pause"); return 0; }