C++ | string类型
引入
使用string类型必须首先包含string头文件,同时作为标准库的一部分,string定义在命名空间std中。
1 |
|
定义与初始化
分为直接初始化与拷贝初始化顾名思义
1 | string s1; |
读取位置数量的string对象
1 | int main() |
使用getline读取一整行
getline()函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来),然后把所读的内容存入到那个string对象中去(注意不存换行符)。
1 | int main() |
string的empty和size操作
1 | line.empty(); // 判断line是否为空 |
size_type类型
size()函数返回的不是int而是string::size_type类型的值。
在C++11新标准中允许编译器通过auto或者decltype来推断变量的类型
1 | auto len = line.size(); // len的类型是string::size_type |
由于size函数返回的是一个无符号整型数,因此切记,如果在表达式中混用了带符号数和无符号数将可能产生意想不到的结果。
比较string对象
原则:
- 如果两个string对象的长度不同,而且较短string对象的每个字符都与较长string对象对应位置上的字符相同,就说较短string对象小于较长string对象。
- 如果两个string对象在某些对应的位置上不一-致, 则string对象比较的结果其实是string对象中第- - 对相异字符比较的结果。
字面值与string对象相加
当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string
1 | string s1 = "hello"; s2 = "world" |
字符串字面值与string是不同的类型。
处理string对象中的字符
使用cctype头文件
1 | isalnum(c) // 当c是字母或数字时为真 |
处理每个字符
1 | for (declaration : expression) |
如果要想改变string对象中字符的值,必须把循环变量定义成引用类型。
1 | string s("hello World!!!"); |
只处理一部分字符
要想访问string对象中的单个字符有两种方式:
- 使用下标
- 使用迭代器
使用下标
将首字母大写
1 | string s("some string"); |
把第一个词改为大写
1 | for (decltype(s.size()) index = 0; |
&&:逻辑与运算符