c++ string
¶字符串和字符数组
¶cin.getline()与getline()的区别
cin.getline要使用字符数组做参数,getline要使用字符串做参数
- cin.getline(字符数组,读取的长度);
- getline(cin,字符串名)
1 | char name[20]; |
¶string 与 stringstream
参考资料:
¶string基本用法
¶赋值
可以用 char* 类型的变量、常量,以及 char 类型的变量、常量对 string 对象进行赋值
1 | string s1; |
¶拼接
我们一般常用+和+=运算符对 string 对象执行字符串的连接操作。除此之外,也可以使用 append 成员函数进行拼接
1 | string s1("123"), s2("abc"); |
¶比较
字符串的比较默认是按照字典序来比较的,并且遵从两个规则:1. 逐个比较 2. 不同即停
string 类还有 compare 成员函数,也可用于比较字符串
常用的比较符:<、<=、==、!=、>=、>
ompare 成员函数有以下返回值:
- 小于 0 表示当前的字符串小;
- 等于 0 表示两个字符串相等;
- 大于 0 表示当前的字符串大。
1 | string s1("hello"), s2("hello, world"); |
¶string常用的成员函数
¶find()函数
使用方法: s.find(sub)
,有返回值:无符号整数
示例代码:
1 | //find函数返回类型size_type |
-
Q1: find函数的返回类型
string::size_type 是一个与实现相关的无符号整数类型,通常与 size_t 相同,用来表示字符串的长度和下标等
它定义为与unsigned型(unsigned int获unsigned long)具有相同含义
与实现相关的意思是它在不同的机器上,长度是可以不同的,并非固定的长度,只要你使用了这个类型,就使得你的程序适合这个机器 -
Q2: != string::npos
npos表示size_type的最大值,用来表示不存在的位置 -
Q3: find函数的返回值
如果找到了子串,则find函数的返回值是这个字串在字符串中第一次出现的位置。如果没有找到,那么会返回一个特别的标记string::npos
¶size() 函数
length 成员函数返回字符串的长度。size 成员函数可以实现同样的功能。
一般用size()多一些
1 | string s1 = "12345"; |
¶substr() 函数
substr 成员函数可以用于求子串 (n, m),调用时,如果省略 m 或 m 超过了字符串的长度,则求出来的子串就是从下标 n 开始一直到字符串结束的部分。例如:
1 | string s1 = "hiyoung blog"; |
¶replace() 函数
replace 成员函数可以对 string 对象中的子串进行替换,返回值为对象自身的引用。例如:
1 | string s1("Real Steel"); |
¶erase() 函数
erase 成员函数可以删除 string 对象中的子串,返回值为对象自身的引用
s.erase(起始位置,长度);
1 | string s1("Real Steel"); |
¶insert() 函数
insert 成员函数可以在 string 对象中插入另一个字符串,返回值为对象自身的引用
1 | string s1("Limitless"), s2("00"); |