#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.uj5u.com/houduan/64975.html
標籤:C++
上一篇:eight(待考究)
下一篇:stl_vector復習
