🌈个人主页:羽晨同学
💫个人格言:“成为自己未来的主人~”
assign
这个接口的目的是用一个新的值代替之前的那个值
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<list>
#include<algorithm>
using namespace std;
void test_string1()
{
string s1("hello world");
cout << s1 << endl;
s1.assign("11111");
cout << s1 << endl;
}
int main()
{
test_string1();
return 0;
}
insert
这个接口的目的在于插入
void test_string1()
{
string s1("hello world");
cout << s1 << endl;
s1.assign("11111");
cout << s1 << endl;
//s1.insert(0, "xxxx");
//cout << s1 << endl;
//insert的效率很低,时间复杂度为O(N)
// 一般来说我们不使用这个
string s2("hello world");
s2.insert(0, "xxxx");
cout << s2 << endl;
char ch = 'y';
cin >> ch;
// 在s2的开头插入5个ch获取的值
s2.insert(0, 5, ch);
cout << s2 << endl;
//在s2之前插入y
s2.insert(s2.begin(), 'y');
cout << s2 << endl;
// 将s1字符串中的所有元素加到s2之前
s2.insert(s2.begin(), s1.begin(), s1.end());
cout << s2<<endl;
}
erease
这个接口的目的在于减少这个的长度,删除string中的一些字符
void test_string2()
{
string s1("hello world");
cout << s1 << endl;
s1.erase(2, 5);
cout << s1 << endl;
s1.erase(1, 100);
cout << s1 << endl;
}
int main()
{
test_string2();
return 0;
}
replace
void test_string2()
{
string s1("hello world");
cout << s1 << endl;
s1.erase(2, 5);
cout << s1 << endl;
s1.erase(1, 100);
cout << s1 << endl;
string s2("hello world");
s2.replace(5, 1, "%20");
cout << s2 << endl;
string s3("hello world hello bit");
for (size_t i = 0; i < s3.size();)
{
if (s3[i] == ' ')
{
s3.replace(i, 1, "%20");
i += 3;
}
else
{
i++;
}
}
cout << s3 << endl;
}
在这段代码当中,很好的诠释了replace的作用,replace可以起到替代的作用,例如:
s3.replace(i, 1, "%20");
replace括号当中,第一个是从i位置,删除一个字符,然后用%20替代
所以,结果对应为:
reserve
void TestPushBack()
{
string s;
s.reserve(200);
s[100] = 'x';
size_t sz = s.capacity();
cout << "capacity changed: " << sz << '\n';
cout << "making s grow: \n";
for (int i = 0; i < 200; ++i)
{
s.push_back('c');
if (sz != s.capacity())
{
sz = s.capacity();
cout << "capacity changed: " << sz << endl;
}
}
}
在这段代码当中,会出现报错情况,原因是由于虽然开辟了空间但并未进行空间的初始化。导致产生越界访问。
resize
void test_string11()
{
string s1;
s1.resize(5);
s1[4] = '3';
s1[3] = '4';
s1[2] = '5';
s1[1] = '6';
s1[0] = '7';
cout << s1 << endl;
string s2("hello world");
s2.resize(20, 'x');
//删除
s2.resize(5);
cout << s2 << endl;
}
void test_string12()
{
string file("string.cpp.zip");
size_t pos = file.find('.');
//string suffix = file.substr(pos, file.size() - pos);
string suffix = file.substr(pos);
cout << suffix << endl;
}