【笔记】C++的string字符串

前言

C++的string字符串学习笔记

字符串的创建

空构造

1
string str;

使用字符数组创建字符串

1
2
const char * c = "";
string str(c);

拷贝构造

1
string str(str);

使用多个相同字符创建字符串

<num>:相同字符的个数

1
string str(<num>, '')

字符串的赋值

直接赋值

1
string& str = str;
1
string& str = "";
1
string& str = '';

利用assign方法赋值

1
2
string& str;
str.assign(str);
1
2
string& str;
str.assign("");
  • 赋值前部分字符

<num>:前部分字符

1
2
string& str;
str.assign("", <num>);
  • 把多个相同字符作为参数

<num>:字符的个数

1
2
string& s7;
s7.assign('', <num>);

字符串的拼接

使用运算符拼接

1
str += str;
1
str += "";
1
str += '';

使用append方法拼接

1
str.append(str);
1
str.append("");
1
str.append('');
  • 拼接字符串的前部分字符

<num>:前部分字符下标

1
str.append("", <num>);
  • 拼接字符串的中间部分字符

<start>:开始位置下标
<num>:截取的字符个数

1
str.append("", <start>, <num>);

字符串的查找

  • 查找指定字符串是否存在,返回int值下标

find函数

  • 得到第一次出现子串的位置

从起始位置开始查找

1
str.find(str);
1
str.find("");
1
str.find('');

从指定位置开始查找

<index>:开始查找的位置下标

1
str.find(str, <index>);
1
str.find("", <index>);
1
str.find('', <index>);

从指定位置开始查找并指定结束位置

<index>:开始查找的位置下标
<num>:父串中需要查找的字符个数

1
str.find(str, <index>, <num>);
1
str.find("", <index>, <num>);
1
str.find('', <index>, <num>);

rfind函数

  • 得到最后一次出现子串的位置

从起始位置开始查找

1
str.rfind(str);
1
str.rfind("");
1
str.rfind('');

从指定位置开始查找

<index>:开始查找的位置下标

1
str.rfind(str, <index>);
1
str.rfind("", <index>);
1
str.rfind('', <index>);

从指定位置开始查找并指定结束位置

<index>:开始查找的位置下标
<num>:父串中需要查找的字符个数

1
str.rfind(str, <index>, <num>);
1
str.rfind("", <index>, <num>);
1
str.rfind('', <index>, <num>);

字符串的替换

  • 在字符串的指定位置替换字符串
  • 并不是替换指定个数子串,而是将子串所有内容替换父串指定个数的字符

<start>:开始位置下标
<num>:要替换的字符个数

1
str.replace(<start>, <num>, str);
1
str.replace(<start>, <num>, "");

字符串比较

  • 根据每个字符的ASCII码值比较
    • 如果旧串等于新串,返回0
    • 如果旧串大于新串,返回1
    • 如果旧串小于新串,返回-1
1
str_old.compare(str_new);

字符串的中某个字符的读写

直接用运算符

  • 因为字符串本质是字符数组,所以可以用字符在字符数组中的下标来找到字符在字符串中的位置

<index>:字符在字符串中的下标

1
str[<index>];
1
str[<index>] = '';

通过at函数

1
str.at(<index>);
1
str.at(<index>) = '';

字符串的插入

<index>:想要插入的位置下标

1
str.insert(<index>, str);
1
str.insert(<index>, "");
  • 插入多个相同的字符

<num>:插入字符的个数

1
str.insert(<index>, <num>, '');

字符串的删除

<index>:开始删除的位置下标
<num>:删除字符的个数

1
str,erase(<index>, <num>);

删除到末尾

1
str,erase(<index>);

截取子串

  • 返回子串

<index>:开始截取位置
<num>:开始截取的字符个数

1
str.substr(<index>, <num>);

从指定位置到末尾

1
str.substr(<index>);

从头截取指定个数的字符

1
str.substr(<num>);

完成

参考文献

哔哩哔哩——黑马程序员