string基本功能
字符串的输入输出
#include <bits/stdc++.h>
using namespace std;
int main(){
string a1;//生成空字符的字符串
cout<<a1<<endl;
string a2("hello world!");//字符串为hello world
cout<<a2<<endl;
char x3[]={"happy everday"};//char类型字符数组可以直接复制进string形成字符串
string a3(x3);
cout<<a3<<endl;
string a4(a2);//直接复制相同类型
cout<<a4<<endl;
string a5(10,'i');//(num,char c)包含num个c字符的字符串
cout<<a5<<endl;
//输入输出和普遍方法相同
string a6;
cin>>a6;//(遇到空白字符【Tab,回车,空格键】结束)
cout<<a6<<endl;
字符串的长度 length
(不包括结束符\0)
string a("hello world!");
int b=a.length();
cout<<b<<endl;
字符串的连接 append
//字符串的连接 append(主要是头尾)
a2.append(a3);//将string类型 a3连接到a2后,放在a2里
cout<<"a2&a3 "<<a2<<endl;
a2.append(6,'i');//(num,char c)将num个c连接到a2后
cout<<a2<<endl;
a2.append(x3);//将char* 类型 c3连接到a2后,放在a2里
cout<<"a2&x3 "<<a2<<endl;
字符串的插入 insert
字符串的插入 insert(主要是中间)
string c1("abcdefghijkl");
string c2("0000000");
c1.insert(3,c2);//(pos, ),pos:从pos位置的前面开始插入
cout<<c1<<endl;
字符串的比较 compare
// 字符串的比较 compare ( >:正数 )( =:0 )( <:负数 )[字符串的比较时我觉得和字母的ACSⅡ有关系,在ACSⅡ中a<b ]
string b("abc");
string b1("aab");
string b2("abcdef");
string b3("abc");
int result1=b.compare(b1);
int result2=b.compare(b2);
int result3=b.compare(b3);
cout<<result1<<endl<<result2<<endl<<result3<<endl;
char b4[]="ab";
int result4=b.compare(b4);
cout<<result4<<endl;
字符串的查找 find
// 字符串的查找 find 第一个字符位置为0;-1表示未找到
string c("abcdefghijkl");
int ans1=c.find('d',0);//int find( ,int pos);pos表示起始的查找位置(即从pos位置开始向后查找)
int ans2=c.find("bcd",0);
int ans3=c.find("bd",0);
cout<<ans1<<endl<<ans2<<endl<<ans3<<endl;
string c1("bcd");
char c2[]="def";
int ans4=c.find(c1,0);
int ans5=c.find(c2,0);
cout<<ans4<<endl<<ans5<<endl;
字符串的替换 replace
// 字符串的替换 replace
string c1("abcdefghijkl");
cout<<"before"<<endl<<c1<<endl;
c1.replace(2,3,"123456");//(int pos,int n,插入内容)pos:从第pos个位置开始插入 n: n个字符被替换 (取缔从pos到pos+n的位置)
cout<<"after"<<endl<<c1<<endl;
string c2("abcdefghijkl");
cout<<"before"<<endl<<c2<<endl;
c2.replace(2,5,10,'i');//插入10个'i'
cout<<"after"<<endl<<c2<<endl;
字符串的删除 erase
// 字符串的删除 erase
string c1("abcdefghijkl");
cout<<"before"<<endl<<c1<<endl;
c1.erase(2,9);//(pos,n)从pos的位置开始删除n个字符
cout<<"after"<<endl<<c1<<endl;
提取子串 substr
// 提取子串 substr
string c1("abcdefghijkl");
string kindc1=c1.substr(2,6);//(pos,n)从pos的位置开始提取n个字符
cout<<kindc1<<endl;
总代码
(可以复制自己运行试试帮助理解):
#include <bits/stdc++.h>
using namespace std;
int main(){
// string a1;//生成空字符的字符串
// cout<<a1<<endl;
//
// string a2("hello world!");//字符串为hello world
// cout<<a2<<endl;
//
// char x3[]={"happy everday"};//char类型字符数组可以直接复制进string形成字符串
// string a3(x3);
// cout<<a3<<endl;
//
// string a4(a2);//直接复制相同类型
// cout<<a4<<endl;
//
// string a5(10,'i');//(num,char c)包含num个c字符的字符串
// cout<<a5<<endl;
//
// //输入输出和普遍方法相同
// string a6;
// cin>>a6;//(遇到空白字符【Tab,回车,空格键】结束)
// cout<<a6<<endl;
//字符串的连接 append(主要是头尾)
// a2.append(a3);//将string类型 a3连接到a2后,放在a2里
// cout<<"a2&a3 "<<a2<<endl;
//
// a2.append(6,'i');//(num,char c)将num个c连接到a2后
// cout<<a2<<endl;
//
// a2.append(x3);//将char* 类型 c3连接到a2后,放在a2里
// cout<<"a2&x3 "<<a2<<endl;
// 字符串的比较 compare ( >:正数 )( =:0 )( <:负数 )[字符串的比较时我觉得和字母的ACSⅡ有关系,在ACSⅡ中a<b ]
// string b("abc");
// string b1("aab");
// string b2("abcdef");
// string b3("abc");
// int result1=b.compare(b1);
// int result2=b.compare(b2);
// int result3=b.compare(b3);
// cout<<result1<<endl<<result2<<endl<<result3<<endl;
// char b4[]="ab";
// int result4=b.compare(b4);
// cout<<result4<<endl;
// 字符串的查找 find 第一个字符位置为0;-1表示未找到
// string c("abcdefghijkl");
// int ans1=c.find('d',0);//int find( ,int pos);pos表示起始的查找位置(即从pos位置开始向后查找)
// int ans2=c.find("bcd",0);
// int ans3=c.find("bd",0);
// cout<<ans1<<endl<<ans2<<endl<<ans3<<endl;
// string c1("bcd");
// char c2[]="def";
// int ans4=c.find(c1,0);
// int ans5=c.find(c2,0);
// cout<<ans4<<endl<<ans5<<endl;
// 字符串的替换 replace
// string c1("abcdefghijkl");
// cout<<"before"<<endl<<c1<<endl;
// c1.replace(2,3,"123456");//(int pos,int n,插入内容)pos:从第pos个位置开始插入 n: n个字符被替换 (取缔从pos到pos+n的位置)
// cout<<"after"<<endl<<c1<<endl;
// string c2("abcdefghijkl");
// cout<<"before"<<endl<<c2<<endl;
// c2.replace(2,5,10,'i');//插入10个'i'
// cout<<"after"<<endl<<c2<<endl;
// 字符串的插入 insert(主要是中间)
// string c1("abcdefghijkl");
// string c2("0000000");
// c1.insert(3,c2);//(pos, ),pos:从pos位置的前面开始插入
// cout<<c1<<endl;
// 字符串的删除 erase
// string c1("abcdefghijkl");
// cout<<"before"<<endl<<c1<<endl;
// c1.erase(2,9);//(pos,n)从pos的位置开始删除n个字符
// cout<<"after"<<endl<<c1<<endl;
// 提取子串 substr
// string c1("abcdefghijkl");
// string kindc1=c1.substr(2,6);//(pos,n)从pos的位置开始提取n个字符
// cout<<kindc1<<endl;
//
return 0;
}