string
int main()
{
string s1("hello world");
// 开空间
s1.reserve(100);
cout << s1.size() << endl;
cout << s1.capacity() << endl;
// 开空间+填值初始化
//s1.resize(200);
s1.resize(200, 'x');
cout << s1.size() << endl;
cout << s1.capacity() << endl;
s1.resize(20);
cout << s1.size() << endl;
cout << s1.capacity() << endl;
s1.resize(0);
cout << s1.size() << endl;
cout << s1.capacity() << endl;
return 0;
}
运行结果:
提前扩容,一把到位
扩容加填值
int main()
{
try {
string s1("hello world");
s1.at(0) = 'x';
cout << s1 << endl;
//s1[15]; // 暴力处理
s1.at(15); // 温和的错误处理
}
catch (const exception& e)
{
cout << e.what() << endl;
}
return 0;
}
s1.at(15)通过访问下标为15(不存在的)的字符来验证at的功能,抛出异常。温柔的检查
暴力的检查:不想吃饭了,直接把桌子掀了;
温柔的检查:不想吃饭了,把碗收起来,自己回房间去了。
下面介绍append:追加;assign:覆盖;insert:在第几个位置插入几个字符(存在效率问题,不要多用)
int main()
{
string s1("hello world");
s1.append("ssssss");
cout << s1 << endl;
s1.assign("111111111");
cout << s1 << endl;
s1.insert(0, "hello");
cout << s1 << endl;
s1.insert(5, "world");
cout << s1 << endl;
s1.insert(0, 10, 'x');
cout << s1 << endl;
s1.insert(s1.begin()+10, 10, 'y');
cout << s1 << endl;
return 0;
}
Erase:从某个位置开始删除n个字符,如果给多了,有多少删多少。可以头删,也可以给迭代器位置(不建议经常使用,效率不高)
int main()
{
string s1("hello world");
s1.erase(5, 1);
cout << s1 << endl;
s1.erase(5);
cout << s1 << endl;
string s2("hello world");
s2.erase(0, 1);
cout << s2 << endl;
s2.erase(s2.begin());
cout << s2 << endl;
return 0;
}
原文地址:https://blog.csdn.net/hhhh_h_h_/article/details/140503053
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!