string 类的常用构造函数
string()
:构造空的string类对象,即空字符串string(const char* s)
:用C-string来构造string类对象string(size_t n, char c)
:string类对象中包含n个字符cstring(const string&s)
:拷贝构造函数
int main()
{
string s1; // 构造空的string类对象s1
string s2("hello bit"); // 用C格式字符串构造string类对象s2
string s3(s2); // 拷贝构造s3
}
输入和输出
string 类重载了 <<
运算符来显示string 对象,该运算符返回istream对象的引用。
string claim("The string class has many feature.");
cout << claim << endl;
同样的,string 类重载了 >>
运算符,使得能够将输入读到字符串中,遇到空白时输入终止。
string who;
cin >> who;
面向行的输入geline()
string str1, str2;
getline(cin, str1); //read to end-of-line
getline(cin, str2, '.');//read to peraid
基本赋值
string name("Alice");//将一 个string对象赋给另 个
string pres, veep, source, join, awked;
pres = name;
veep = "hello summer.";//将C风格字符串赋给string对象
source = 'X';
join = name + source;
awked = {'c', 'o', 'l', 'o', 'r'};//使用初始化列表进行赋值
容量操作
size()
:返回字符串有效字符长度length ()
:返回字符串有效字符长度capacity()
:返回空间总大小empty()
:检测字符串释放为空串,是返回true,否则返回falseclear()
:清空有效字符,不改变底层空间大小reserve(size_t res_arg=0)
:为string预留空间,不改变有效元素个数,当reserve的参数小于string的底层空间总大小时,reserver不会改变容量大小resize()
:将有效字符的个数该成n个,多出的空间用字符c填充。resize(size_t n)
与resize(size_t n, char c)
都是将字符串中有效字符个数改变到n个,不同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的元素空间。注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变
修改操作
push_back (char c)
:在字符串后尾插字符cappend()
:在字符串后追加一个字符串c_str()
:返回C格式字符串substr()
: 在str中从pos位置开始,截取n个字符,然后将其返回void swap( basic_string& str )
:交换两个字符串的内容insert()
:将string对象、字符串数组或者几个字符插入到string对象中erase()
:从字符串中删除字符replace()
:替换字符串的指定部分
字符串搜索
find()
:从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置,若找不到这种子串则为npos
rfind()
:从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置find_first_of()
:寻找等于给定字符序列中字符之一的首个字符。搜索只考虑区间[pos, size())
,若区间中不存在字符,则返回npos
find_last_of()
:寻找等于给定字符序列中字符之一的最后字符,搜索只考虑区间[0, pos]
,若区间中不存在这种字符,则返回npos
迭代器
数值转换
stoi()
:转换字符串为有符号整数转换字符串为有符号整数to_string()
:转换整数或浮点值为 string
std::reverse