C++中有两种字符串形式,一种是C语言字符数组,一般可以使用 char*指针来操作它;另一种是C++中基于标准库的string类型,这算是更高层次的抽象数据类型。
主要讨论一下string类型,既然是基于标准库的,那么使用它时首先要把头文件拿过来,#include<string> using std:string;
1.定义和初始化string对象
string s1 ; //默认初始化,s1是一个空串,s1是string类型的一个对象,创建的时候调用了无参构造函数,初始化为空
string s2 = s1; //使用等号,叫做拷贝初始化,我认为 = 调用了拷贝构造函数,将右值赋值到新创建的对象中去,函数原型类似 string(string s1)
string s3("hello world") //构造函数初始化
string s4(10,c) // s4的值为 "cccccccccc"
2.string的操作
os<<s 输入 is>>s 输出 getline(is,s) //cin中读取一行给s,返回is s.empty() //s为空返回true s[n] //返回s中第n个字符的引用 s.size() 返回s中字符的个数
值得注意的是 s.size()的返回类型是 string:size_type类型,看起来它返回一个 int 或者 unsigned 比较合理,但是人家就是返回string:size_type 类型。 这是一个无符号整型的数, 但是如果你在程序中有这样的操作 s.size < n 假设n是一个负数,那么结果八成是true,因为执行这句话时 n转换为无符号数再比较大小,负数转换为无符号数的时候相当大。
auto len = s.size() //有了size() 别用 int 了,混用容易出问题
3.字符串相加的时候注意点
string s1 = "老王";
string s = "123"+"3333"+s1; // 错的,+号两侧至少有一个string对象
string s = "3333"+s1+"123"; //正确