一.string 头文件
string 类的成员函数有很多,同一个名字的函数也常会有五六个重载的版本,这里只整理常用的几个。
头文件:
#include <string> //注意这里不是string.h string.h是C字符串头文件
二.string初始化
(1).几个常用初始化
//string的初始化,在C++中字符串是一种数据类型;
string s1 = "abcdefghijk";
string s2("abcdefghijk");
string s3(s2);
string s4 = s1; //调用拷贝构造函数;
string s5(10, 'a');//10个空间中的字符都是'a';
s5 = s1;
string s6 = s1 + s2; //string可以直接加,和append加到末尾一样
(2). 赋值
string s1;
s1 = "12345"; // s1 = "12345"
//assign 成员函数,可以用来对 string 对象赋值, 没怎么用过
string s2;
s2.assign(s1); // s2 = s1
三. string 常用函数
(1). substr操作,返回某个子字符串
string s="abcdefg";
//s.substr(pos1,n)返回字符串位置为pos1后面的n个字符组成的串
string s2=s.substr(1,5);
//bcdef
//s.substr(pos)//得到一个pos到结尾的串
(2). size(),length() ,返回字符数量
for(int i = 0; i < s1.size(); i++) //length同
cout << s1[i] << " ";
(3). find和rfind函数,通常搭配substr不错
find函数主要是查找一个字符串是否在调用的字符串中出现过,返回第一个出现的位置,大小写敏感。
rfind函数就是找最后一个出现的匹配字符串,返回的位置仍然是从前往后数的。
std::string str ("There are two needles in this haystack with needles.");
std::string str2 ("needle");
//在str当中查找第一个出现的needle,找到则返回出现的位置下标,否则返回结尾
std::size_t found = str.find(str2);
//std::size_t found = str.find("needle"); //和上面相同
//在str当中,从第found+1的位置开始查找参数字符串的前6个字符
found=str.find("needles are small",found+1,6);
std::string str ("The sixth sick sheik's sixth sheep's sick.");
std::string key ("sixth");// ^
//rfind是找最后一个出现的匹配字符串下标
std::size_t found = str.rfind(key);
(4). 交换两个string对象的内容
swap 成员函数可以交换两个 string 对象的内容。例如:
string s1("West”), s2("East");
s1.swap(s2); // s1 = "East",s2 = "West"
四. string一些常用操作
(1). 遍历
//数组方式
for(int i = 0; i < s1.length(); i++)
cout << s1[i] << " ";
//迭代器方式
for(string::iterator it = s1.begin(); it != s1.end(); it++)
cout << *it << " ";
(2). 查找,替换
string s1 = "wbm hello wbm 111 wbm 222 wbm 333";
//1、第一次出现wbm的下标
int index = s1.find("wbm", 0);
//2、求wbm每一次出现的数组下标
int offindex = s1.find("wbm", 0);
while(offindex != -1){
offindex += strlen("wbm");
offindex = s1.find("wbm", offindex);
}
//替换的函数,替换后为AAA bbb ccc
string s3 = "aaa bbb ccc";
s3.replace(0, 3, "AAA");
(3). 区间的删除和插入
string s1 = "hello1 hello2 hell03";
s1.erase(s1.begin(), s1.end()); //删除从pos开始的n个字符;
s2.insert(0, "AAA"); //头插法
s2.insert(s2.length(), "CCC");//尾插法
五. string一些转换
string转换 | |
---|---|
to_string(val) | 把val转换成string |
s.c_str() | string转化为char[] |