string容器的使用方法

String容器

1、String和char*类型字符串比较

String是一个类,char*是一个指针

String封装了很多成员方法

String不考虑内存释放和越界


2、String和char*类型字符串转换
//char*和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初始化

String(int n,char c);//使用n个字符c初始化
代码如下:
//string初始化
void test02()
{
string s;//默认构造
string s2 = "abcd";
string s3(s2);
string s4(10, 'c');

}

4、string基本的赋值操作

5、string存取字符操作

char& operato[](int n);//通过[]方式区字符

char& at(int n);//通过at方法获取字符
代码如下:
//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 << "访问越界";
}
}

6、string拼接操作

string s1 = "abcd";

string s2 = "efg";

s1 += s2;

cout << s1 << endl;

//成员方法append

s1.append(s2);
代码如下:
//string容器拼接操作
void test04()
{
string s1 = "abcd";
string s2 = "efg";
s1 += s2;
cout << s1 << endl;
//成员方法append
s1.append(s2);
}

7、string查找替换
代码如下:
//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;

}

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)//插入字符串

String& erase(int pos,int n=npos);//删除从pos开始的n个字符
代码如下:
//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);

}

//容器存储有限数据的数据结构
//迭代器
//算法
#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;
}

#题解#
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务