C++ string容器

1.基本概念

本质
string是 C++ 风格的字符串,而 string 本质上是一个类
string char * 区别
char * 是一个指针
string 是一个类,类内部封装了 char* ,管理这个字符串,是一个 char* 型的容器。
特点
string 类内部封装了很多成员方法
例如:查找 fifind ,拷贝 copy ,删除 delete, 替换 replace, 插入 insert
string 管理 char* 所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责  

2.构造函数 

string();        //创建一个空的字符串 例如: string str;
string s1 ; 
string(const char* s);         // 使用字符串 s 初始化
const char* str = "hello world" ;
string s2 ( str );         //使用字符串str构造s2
string(const string& str) ;         //使用一个 string 对象初始化另一个 string 对象
string s3 ( s2 );
string(int n, char c) ;         //使用 n 个字符 c 初始化
string s4 ( 10 , 'a' );

3. 赋值操作

string& operator=(const char* s);         //char* 类型字符串 赋值给当前的字符串
string str1 ;
str1 = "hello world" ;
string& operator=(const string &s);         // 把字符串 s 赋给当前的字符串
string str2 ;
str2 = str1 ;
string& operator=(char c);         // 字符赋值给当前的字符串
string str3 ;
str3 = 'a';
string& assign(const char *s) ;         //把字符串 s 赋给当前的字符串
string str4 ;
str4 . assign ( "hello c++" );
string& assign(const char *s, int n) ; /        /把字符串 s 的前 n 个字符赋给当前的字符串
string& assign(const string &s);         // 把字符串 s 赋给当前字符串
string& assign(int n, char c);         // n 个字符 c 赋给当前字符串

4.拼接操作 

string& operator+=(const char* str) ;         //重载 += 操作符
string str1 = " " ;
str1 += " 爱玩游戏 " ;
string& operator+=(const char c);         // 重载 += 操作符

str1 += ':'; 

string& operator+=(const string& str) ;         //重载 += 操作符
str1 += str2 ;
string& append(const char *s);         // 把字符串 s 连接到当前字符串结尾
string str3 = "I" ;
str3 . append ( " love " );
string& append(const char *s, int n);         // 把字符串 s 的前 n 个字符连接到当前字符串结尾
str3 . append ( "game abcde" , 4 );
string& append(const string &s);         //同operator+=(const string& str)
string& append(const string &s, int pos, int n);         //字符串s 中从 pos 开始的 n 个字符连接到字符串结尾

5.查找和替换 

int find(const string& str, int pos = 0) const;         // 查找 str 第一次出现位置 , pos 开始查找
string str1 = "abcdefg" ;
int pos;
pos = str1 . find ( "de" );
int rfind(const string& str, int pos = npos) const;         // 查找 str 最后一次位置 , pos 开始查找
pos = str1 . rfind ( "de" );
string& replace(int pos, int n, const string& str) ;         //替换从 pos 开始 n 个字符为字符串 str
string str1 = "abcdefg" ;
str1 . replace ( 1 , 3 , "1111" );
int find(const char* s, int pos = 0) const ;         //查找 s 第一次出现位置 , pos 开始查找
int find(const char* s, int pos, int n) const ;         //从 pos 位置查找 s 的前 n 个字符第一次位置
int find(const char c, int pos = 0) const ;         //查找字符 c 第一次出现位置
int rfind(const char* s, int pos = npos) const;         // 查找 s 最后一次出现位置 , pos 开始查找
int rfind(const char* s, int pos, int n) const ;         //从 pos 查找 s 的前 n 个字符最后一次位置
int rfind(const char c, int pos = 0) const;         // 查找字符 c 最后一次出现位置
string& replace(int pos, int n,const char* s);         // 替换从 pos 开始的 n 个字符为字符串 s

注意:find查找是从左往后,rfind从右往左
find找到字符串后返回查找的第一个字符位置,找不到返回-1
replace在替换时,要指定从哪个位置起,多少个字符,替换成什么样的字符串

6.字符串比较

int compare(const string &s) const ;         //与字符串 s 比较
string s1 = "hello" ;
string s2 = "aello" ;
int ret = s1 . compare ( s2 );         //等于返回0,大于返回1,小于返回-1
int compare(const char *s) const ;         //与字符串 s 比较

 7.字符存取

char& operator[](int n) ;         //通过 [] 方式取字符
cout << str [1] ;
char& at(int n) ;         //通过 at 方法获取字符

cout << str.at(1);

8.插入和删除 

string& insert(int pos, const char* s);         // 插入字符串
string str = "hello" ;
str . insert ( 1 , "111" );
string& erase(int pos, int n = npos) ;         //删除从 Pos 开始的 n 个字符
str . erase ( 1 , 3 );          // 1 号位置开始 3 个字符
string& insert(int pos, const string& str) ;         //插入字符串
string& insert(int pos, int n, char c) ;         //在指定位置插入 n 个字符 c

注意:插入和删除的起始下标都是从0开始

 9.获取子串

string substr(int pos = 0, int n = npos) const; //返回由pos开始的n个字符组成的字符串  

string str = "abcdefg" ;
string subStr = str . substr ( 1 , 3 );

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值