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;
} #题解#
查看16道真题和解析