1.基本概念
本质
string是 C++ 风格的字符串,而 string 本质上是一个类
string
和
char *
区别
char * 是一个指针string 是一个类,类内部封装了 char* ,管理这个字符串,是一个 char* 型的容器。
特点
string 类内部封装了很多成员方法例如:查找 fifind ,拷贝 copy ,删除 delete, 替换 replace, 插入 insertstring 管理 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 );