stl_string复习

2020-02-10 16:01:35来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

stl_string复习

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

void definition() //定义
{
string str(5,'a');
cout << str <<endl;
string str1("abcdefghijklmn");
cout << str1 <<endl;
string str2("123456789",3);
cout << str2 <<endl;
string str3("abcdefghijklmn",3,5);
cout << str3 <<endl;
}

void output(string str) //输出
{
cout << str << "\n" << str.c_str() << '\n' << str[3] << str.at(3) <<endl;


}

void attribute(string str) //属性
{
string str1("123");
cout << str1.capacity() << endl; //空间大小
str1.reserve(18); //重置空间大小
cout << str1.capacity() << endl;
cout << str.length() << endl; //字符串长度
cout << str.size() << endl; //字符串大小
str.resize(8); //重置字符串大小
cout << str << endl;
}

void modification(string str) //修改
{
string str1="123456";
char c1='!';
char c[]="wzr";

//中间插入
str.insert(3,str1);
cout << str << endl;
//str.insert(3,str1,3,2);
str.insert(3,c,3);
cout << str << endl;
str.insert(3,2,c1);
cout << str << endl;
//str+=str1;

//尾部插入
str.append(str1);
cout << str << endl;
//str.append(c);
//str.append(str1,3,2);
//str.append(c,2);
//str.append(2,c1);

//重新赋值
str.assign(str1);
cout << str << endl;
//str.assign(c);
//str.assign(str1,2,3);//从下标为2赋值三个
//str.assign(c,2);
//str.assign(3,c1);
//str[3]='@';
//cin >> str[4];

//删除
str.erase(2,3);
cout << str << endl;
str.erase(3);
cout << str << endl;
}

void compare(string str) //比较
{
string str2=("abcdeff");
cout << str.compare(str2) << endl;
cout << (str>str2) << endl;
}

void operation(string str) //操作
{
char c1[8]="0";
str.copy(c1,3,2); //从3开始复制两个 2的位置必须小于数组长度
cout << c1 << endl;
string str3="bcd";

cout << str.find(str3,3) << endl; //从下标[3]开始查找 找不到就返回起始位置
cout << (int)str.find(str3,3) << endl; //str3也可以是字符串,字符

cout << str.substr(3,2) << endl; //返回指定位置的子串下标[3]的2个
str.swap(str3); //交换
cout << str << '\n' << str3 << endl;

}
//运算符重载
void _iterator(string str) //string重新申请空间时迭代器会失效(扩大空间时ite会释放)
{

string::iterator ite;
ite=str.begin();

for(ite;ite!=str.end();ite++)
{
cout << *ite << endl;
//cin >> *ite;
}
//cout << ite[2] << endl;
//for(size_t i=0;i<str.size();i++)//size为无符号整型
//{
// cout << ite[i] << endl;
//}
//str.append(18,'h');
//ite[3]='w'; //失效
str.append(18,'i');
ite=str.begin();
ite[11]='w';
cout << str << endl;


}

void useiterator(string str)
{
string str4="qwer";
string::iterator ite=str4.begin();
//str.append(str4.begin(),str4.begin()+4);
//str.append(ite.start(),ite.end()); 错误
//str.erase(3,2);
//str.erase(str.begin()+2,3); //str.begin()可以看作0
str.insert(str.begin()+3,str4.begin(),str4.end());
cout << str << endl;
}

void fun(char c) //c为string元素(原型)的类型 不是 char *
{
cout << c;
}
void _algorithm(string str)
{
for_each(str.begin(),str.end(),fun);
//遍历每一个(开始,结尾,行为);
cout << endl;
sort(str.begin(),str.end(),greater<char>());
cout << str << endl;
sort(str.begin(),str.end(),less<char>());
for_each(str.begin(),str.end(),fun);
}

 

int main()
{
string str("abcdefg");
//definition(); //定义
//output(str); //输出
//attribute(str); //属性
//modification(str); //修改
//compare(str);
//operation(str); //操作
//_iterator(str);
//useiterator(str); //使用迭代器
//_algorithm(str); //算法
return 0;
}


原文链接:https://www.cnblogs.com/sos3210/p/12292324.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:eight(待考究)

下一篇:stl_vector复习