自学内容网 自学内容网

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;
}

运行结果:

提前扩容,一把到位

扩容加填值

string 类对象的访问及遍历操作
operator[]: 返回 pos 位置的字符, const string 类对象调用
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)!