背景
写下这篇博客的原因是在力扣上刷题的时候遇到一个字符串URL的题目(这里),里面需要用到关于string的元素操作,自己不是很熟悉,于是找了资料整理并编写代码,关于字符串的操作大部分常用的都在这里,希望和大家一起学习进步!
字符串常用操作
1.构造和初始化
提供 = 号,assign可以用于初始化,如下:
函数或者操作符 | 函数或者操作符作用 |
---|---|
string str = “handsome boy”; | 初始化一个字符串变量 |
string s(str); | 将字符串s赋值为字符串str |
string s(str,idx); | 将字符串str始于idx的值赋值给s |
string s(str,idx,length) | 将str从idx开始长度为length的部分赋值给s |
string s(num,c) | 将num个字符c赋值给s |
string s(str.begin(),str.end() | 将字符串strbegin到end的部分赋值给s |
s.~string() | 销毁所有字符,释放内存 |
s.assign(str,3,6) | 将str3-6的部分赋值给s |
s.assign(“good”); | 将s赋值“good” |
s.assign(5,‘a’); | s:aaaaa |
示例code:
#include<iostream>
#include<string>
using namespace std;
int main()
{
/***************Initialization********************/
string str = "handsome boy";
string s6,s7,s8, s9, s10;
string s1(str);
//string s2(s,3);
string s3(str,3,4);
string s4(4,'A');
string s5( s4.begin(), s4.end() );
s6.assign(str);
s7.assign(str, 2);
s8.assign(str, 1, 4 );
s9.assign(5, 'a');
//s10.assign('g',5);
/********************Results**********************/
cout << "str: " << str << endl;
cout << "s1: " << s1 << endl;
cout << "s3: " << s3 << endl;
cout << "s4: " << s4 << endl;
cout << "s5: " << s5 << endl;
cout << "s6: " << s6 << endl;
cout << "s7: " << s7 << endl;
cout << "s8: " << s8 << endl;
cout << "s9: " << s9 << endl;
str.~string();
}
结果:
2.其他操作
首先定义两个字符串string str1, str2;
函数操作 | 函数意义 |
---|---|
str1.swap(str2) | 交换两个字符串的元素 |
str1 += str2; | 将str2加到str1的尾部 |
str1.append(str2); | 在str1的尾部加字符串str2 |
str1.append(str2,1,3) | 将str2的第1-3位加到str1的尾部 |
str1.append(“good”) | 将C字符串“good”加到str1的尾部 |
str1.append(5, ‘x’) | 将5个字符‘x’ 加到str1的尾部 |
str1.push_back(‘a’) | 在str1的尾部加入一个字符’a’,注意的是push_back()只能加入一个字符 |
insert() | 在字符串的某个位置插入字符串,需要注意的是这个函数不支持插入单个字符,且插入时必须提供索引,将需要插入的字符串插入到索引后面 |
str1.insert(2, str2) | 在str1的第二个字符后插入字符串str2 |
str1.insert(2, “good”) | 同上 |
erase() | 删除字符,str1.erase(2):删除str1第二位之后的所有元素;str1.erase(2,5):从str1第二位往后删5个 |
clear() | 删除全部字符 |
[ ], at() | 读取某一元素 |
str1.empty() | 判空 |
substr() | 这是一个比较重要而且少用的函数,具体用法为参考以下 |
str1 = str2.substr() | 将str2全部赋值给str1 |
str1 = str2.substr(2,5) | 将str2从2开始往后5个元素赋值给str1 |
str1 = str2.substr(4) | 将str2从第4位往后全部赋值给str1 |
size(), length() | 现有字符串的字符数 |
data() | 将内容以字符数组形式返回 |
具体用法大家可以写一个简单示例运行即可,另欢迎指正!
其他操作示例代码后续上传:
示例code:
TODO
结果:
TODO
参考—>这里