string 表示字符串,在此进行对一些函数的总结,以方便对字符串列类型的数据进行更好的操作。
一,初始化
- string(const char *s) :将 string 对象初始化为 s 指向的字符串
string str("hello");
- string(size_type n,char c) :创建一个包含 n 个元素的 string 对象,其中每个元素都被初始化为字符 c
string str(10, 'a');
- string(const string &str) :将一个 string 对象初始化为 string 对象 str(复制构造函数)
string str("abcde");
string str2(str);
- string() :创建一个默认的 string 对象,长度为 0(默认构造函数)
string str;
- string(int n,num[i]) :创建一个长度为 n 的string 对象,它的末尾是num[i],num 是一个string类型的字符串。((参照leetcoode第6056题)
class Solution {
public:
string largestGoodInteger(string num) {
int n=num.size();
string ans="";
for(int i=2;i<n;i++){
if(num[i-2]==num[i]&&num[i-1]==num[i]){
ans=max(ans,string(3,num[i]));
}
}
return ans;
}
};
获取字符串长度
获取string对象的长度,C语言中使用strlen()来获取字符串长度,C++中使用str.size()或str.length().
string 对象的拼接
C 语言中使用 strcat、strncat 函数来进行字符串拼接操作,C++中可以采用直接 “+ ”运算符的方式。
string.append() 函数,在string对象后添加一个string对象或c风格字符
###对于string对象的比较,可以直接使用关系运算
> < ==
获取子串
使用 string.substr() 函数来获取子串
string s1 = s.substr(i);//获取从s[i] 开始到结尾的子串
string s1=s.substr(i,j)//获取从 i 开始长度为 j 的子串
使用 string.find() 方法查找字符
string.rfind() 与 string.find() 方法类似,只是查找顺序不一样, string.rfind() 是从指定位置 pos (默认为字符串末尾)开始向前查找,直到字符串的首部,并返回第一次查找到匹配项时匹配项首字符的索引。换句话说,就是查找子字符串或字符最后一次出现的位置。
string.find_first_of() 方法在字符串中从指定位置开始向后(默认为索引 0 处)查找参数中任何一个字符首次出现的位置
string str("hello world");
int pos = str.find_first_of("abcde");
int pos = str.find_first_of("abcde", 1); // 第二个参数为位置
string.find_last_of() 方法在字符串中查找参数中任何一个字符最后一次出现的位置
string.find_first_not_of() 方法在字符串中查找第一个不包含在参数中的字符
string.find_last_not_of() 方法在字符串中查找最后一个不包含在参数中的字符
使用 string.insert() 进行插入操作
string& insert(size_t pos,const string&str);
// 在位置 pos 处插入字符串 str
string& insert(size_t pos,const string&str,size_t subpos,size_t sublen);
// 在位置 pos 处插入字符串 str 的从位置 subpos 处开始的 sublen 个字符
string& insert(size_t pos,const char * s);
// 在位置 pos 处插入字符串 s
string& insert(size_t pos,const char * s,size_t n);
// 在位置 pos 处插入字符串 s 的前 n 个字符
string& insert(size_t pos,size_t n,char c);
// 在位置 pos 处插入 n 个字符 c
iterator insert (const_iterator p, size_t n, char c);
// 在 p 处插入 n 个字符 c,并返回插入后迭代器的位置
iterator insert (const_iterator p, char c);
// 在 p 处插入字符 c,并返回插入后迭代器的位置
使用 string.erase() 进行元素删除操作
string& erase (size_t pos = 0, size_t len = npos); // 删除从 pos 处开始的 n 个字符
iterator erase (const_iterator p); // 删除 p 处的一个字符,并返回删除后迭代器的位置
iterator erase (const_iterator first, const_iterator last); // 删除从 first 到last 之间的字符,并返回删除后迭代器的位置
string.front()获取或修改字符串第一个字符
string.back()获取或修改字符串最后一个字符
string.pop_back()删除字符串最后一个元素
整数型与字符串型的转化
int 转 string
string s = to_string (num);
string 转 int
int ans = atoi(s.c_str());
翻转字符串 :
std::reverse(s.begin(), s.end());
子字符串判断
s.find(res)==string::npos//s 中查找res ,res 不是s 的子字符串