string容器的使用方法
String容器
1、String和char*类型字符串比较
String是一个类,char*是一个指针
String封装了很多成员方法
String不考虑内存释放和越界
void test01()
{
//string change char*
string s = "abc";
const char*str= s.c_str();
//char*转换成string类型字符串
char*str2 = "abcd";
string s2(str2);
}
3、String初始化,
String();//创建一个空字符串
String(const string&str);//使用一个对象初始化另一个string对象
String(const char*s);//使用字符串s初始化
void test02()
{
string s;//默认构造
string s2 = "abcd";
string s3(s2);
string s4(10, 'c');
}
4、string基本的赋值操作
5、string存取字符操作
char& operato[](int n);//通过[]方式区字符
void test03()
{
//string容器赋值
string s;
s = "abcd";
string s2;
s2.assign("pppp");
//string容器存取
string s3 = "abcdefg";
for (int i = 0; i < s3.size(); i++)
{
cout << s3[i] << "";
}
//for (int i = 0; i < s3.size; i++)
//{
// cout << s3.at(i) << "";
//}
//[]访问方式访问越界的时候,不会抛异常,直接挂掉
//at会抛异常
try{
cout << s3[100] << endl;
cout << s3.at(100)<< endl;
}
catch (...){
cout << "访问越界";
}
}
6、string拼接操作
string s1 = "abcd";
string s2 = "efg";
s1 += s2;
cout << s1 << endl;
//成员方法append
void test04()
{
string s1 = "abcd";
string s2 = "efg";
s1 += s2;
cout << s1 << endl;
//成员方法append
s1.append(s2);
}
void test05()
{
string s = "abcdefg";
//查找
string target = "bd";
int pos = s.find(target);
char*target2 = "ef";
int pos2=s.find(target2);
int pos3 = s.rfind(target);
//字符串替换
string s1 = "abcd";
s.replace(0, 2, s1);
cout << s << endl;
}
find
rfind
replace
8、string比较
比较返回值,大于时返回1,小于时返回-1,等于时返回0
int compare(const string&s) const;//与字符串s比较
int compare(const char&s) const;//与字符串s比较
8,string子串
String substr(int pos=0,int n=npos)const;//返回由pos来时n个字符组成的n个字符串
9,string插入和删除
String& insert(int pos,const char*s)//插入字符串
void test06()
{
//比较
string s1 = "abc";
string s2 = "abd";
int ret = s1.compare(s2);
if (ret == 1)
{
cout << "s1>s2" << endl;
}
//子串
string s3 = "abcdefg";
string s4 = s3.substr(0, 2);
cout << "s4" << s4 << endl;
//插入和删除
string s5 = "abcd";
s5.insert(0, "pppp");
string s6 = "qqqq";
s5.insert(s5.size() - 1, s6);
//删除,前闭后开
s5.erase(0, 4);
}
//容器存储有限数据的数据结构 //迭代器 //算法 #include<iostream> #include<string> using namespace std; //char*和string转换 void test01() { //string change char* string s = "abc"; const char*str= s.c_str(); //char*转换成string类型字符串 char*str2 = "abcd"; string s2(str2); } //string初始化 void test02() { string s;//默认构造 string s2 = "abcd"; string s3(s2); string s4(10, 'c'); } //string容器字符串赋值和存取 void test03() { //string容器赋值 string s; s = "abcd"; string s2; s2.assign("pppp"); //string容器存取 string s3 = "abcdefg"; for (int i = 0; i < s3.size(); i++) { cout << s3[i] << ""; } //for (int i = 0; i < s3.size; i++) //{ // cout << s3.at(i) << ""; //} //[]访问方式访问越界的时候,不会抛异常,直接挂掉 //at会抛异常 try{ cout << s3[100] << endl; cout << s3.at(100)<< endl; } catch (...){ cout << "访问越界"; } } //string容器拼接操作 void test04() { string s1 = "abcd"; string s2 = "efg"; s1 += s2; cout << s1 << endl; //成员方法append s1.append(s2); } //string查找替换,比较 void test05() { string s = "abcdefg"; //查找 string target = "bd"; int pos = s.find(target); char*target2 = "ef"; int pos2=s.find(target2); int pos3 = s.rfind(target); //字符串替换 string s1 = "abcd"; s.replace(0, 2, s1); cout << s << endl; } //string 比较 子串,插入和删除 void test06() { //比较 string s1 = "abc"; string s2 = "abd"; int ret = s1.compare(s2); if (ret == 1) { cout << "s1>s2" << endl; } //子串 string s3 = "abcdefg"; string s4 = s3.substr(0, 2); cout << "s4" << s4 << endl; //插入和删除 string s5 = "abcd"; s5.insert(0, "pppp"); string s6 = "qqqq"; s5.insert(s5.size() - 1, s6); //删除,前闭后开 s5.erase(0, 4); } int mian() { test06(); return 0; }
#题解#