string容器学习(c++)

string容器

string容器
本质:
	·string是C++风格的字符串,而string本质上是一个类
string和char*的区别:
	·char*是一个指针 
	·string是一个类,类内 不封装了char*,管理这个字符串,是一个char*型的容器。
特点:
	string类内部封装了很多成员方法
	例如:查找find,拷贝copy,删除delete,替换replace, 插入insert
	string 管理char* 所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责

构造函数: 
string();					//创建一个空的字符串,例如:string str;
string(const char* s);		//使用字符串初始化
string(const string& str);	//使用一个string对象初始化里另一个string对象
string(int n, char c);		//使用n个字符c初始化

string赋值操作:
string & operator=(const char* s);		//char*类型字符串 赋值给当前的字符串 
string & operator=(const string &s);	//把字符串s赋值给当前的字符串	
string & operator=(char c);				//把字符赋值给当前的字符串
string & assign(const char* s);			//把字符串s赋值给当前的字符串
string & assign(const char* s, int n);	//把字符串s的前n个字符赋值给当前的字符串
string & assign(const string &s);		//把字符串s赋值给当前的字符串
string & assign(int n, char c);			//用n个字符c赋值给当前的字符串

tring字符串拼接:
string & operator+=(const char* str);		//重载+=操作符 
string & operator+=(char c);				//重载+=操作符 
string & operator+=(const string & str);	//重载+=操作符 
string & append(const char* s);				//把字符串s连接到当前字符串结尾
string & append(const char* s, int n);		//把字符串s连接到当前字符串结尾
string & append(const string & s);			//把字符串s连接到当前字符串结尾
string & append(const string & s, int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾 

string查找和替换:
int find(const string & str, int pos = 0)const;		//查找str第一次出现的位置,从pos开始查找
int find(const char* s, int pos = 0)const;			//查找s第一次出现的位置,从pos开始查找
int find(const char* s, int pos, int n)const;		//从pos查找s的前n个字符第一次位置
int find(const char c, int pos = 0)const;			//查找字符c第一次出现的位置,从pos开始查找
int rfind(const string & str, int pos = npos)const;	//查找str最后一次出现的位置,从pos开始查找
int rfind(const char* s, int pos = npos)const;		//查找s最后一次出现的位置,从pos开始查找
int rfind(const char* s, int pos, int n)const;		//从pos查找s的前n个字符最后一次位置
int rfind(const char c, int pos = 0)const;			//查找字符c最后一次出现的位置,从pos开始查找
string & replace(int pos, int n, const string & str);	//替换从pos开始n个字符为字符串str
string & replace(int pos, int n, const char* s);	//替换从pos开始n个字符为字符串s

string字符串比较:
int compare(const string & s) const;	//与字符串s比较,相等则返回 0 
int compare(const char* s) const;		//与字符串s比较,相等则返回 0 

string字符存取:
char & operator[](int n);				//通过[]方式获取字符
char & at(int n);						//通过at方式获取字符

string插入和删除:
string & insert(int pos, const char*s);				//在pos处插入字符串 
string & insert(int pos, const string & str);		//在pos处插入字符串
string & insert(int pos, int n ,char c);			//在pos处插入n个c字符
string & erase(int pos, int n = npos);				//删除pos开始的n个字符

string子串:
string substr(int pos = 0; int n = npos) const;		//返回有pos开始的n个字符组成的字符串
#include <iostream>
using namespace std;
#include <string>

构造函数:

void test01()
{
    
    
	string  s1;
	
	const char* str = "hello word";
	string s2(str);
	cout << "s2 = " << s2 << endl;
	
	string s3(s2);
	cout << "s3 = " << s3 << endl;
	
	string s4(10, 'c');
	cout << "s4 = " << s4 << endl;
}

string赋值操作:

void test02()
{
    
    
	string str1;
	str1 = "hello world";
	cout << "str1 = " << str1 <<endl;
	
	string str2;
	str2 = str1;
	cout << "str2 = " << str2 <<endl;
	
	string str3;
	str3 = 'a';
	cout << "str3 = " << str3 <<endl;
	
	string str4;
	str4.assign("hello C++");
	cout << "str4 = " << str4 <<endl;
	
	string str5;
	str5.assign("hello C++", 5);
	cout << "str5 = " << str5 <<endl;
	
	string str6;
	str6.assign(str5);
	cout << "str6 = " << str6 <<endl;
	
	string str7;
	str7.assign(10, 'h');
	cout << "str7 = " << str7 <<endl;
}

string字符串拼接:

void test03()
{
    
    
	string str1;
	str1 += "hello world";
	str1 += '!';
	string str2 = " yes";
	str1 += str2; 
	cout << "str1 = " << str1 <<endl;
	
	str2.append(" you ");
	str2.append("are aaaaaaa",4);
	string str3 = " right ";
	str2.append(str3);
	str2.append(str3, 0, 2);
	cout << "str2 = " << str2 <<endl;
}

string查找和替换:

void test04()
{
    
    
	string str = "abcdefghghghijk";
	str.replace(8, 2, "2333333");
	cout << "str = " << str <<endl;
	int pos = str.find("gh");
	cout << "pos = " << pos <<endl;
	int rpos = str.rfind("gh");
	cout << "rpos = " << rpos <<endl;
	
}

string的比较,存取,插入,删除,子串

void test05()
{
    
    
	string str = "abcdefghghghijk";
	string str2 = "abcdefghghghijk";
	if (str.compare(str2) == 0){
    
    
		cout << "str与str2相等" << endl;
	}else{
    
    
		cout << "str与str2不相等" << endl;
	}
	
	str[2] = 'y';
	str.at(0) = 'z';
	cout << str << endl;
	
	str.insert(2, "哈哈哈哈");
	cout << str << endl;
	str.erase(2,4);
	cout << str << endl;
	
	string mail = "[email protected]";
	int pos = mail.find('@');
	string name = mail.substr(0, pos);
	cout << name << endl; 
}
int main()
{
    
    
	test01();
	test02();
	test03();
	test04();
	test05();
	system("pause");
	return 0;
 } 

*黑马程序员c++课程学习练习

猜你喜欢

转载自blog.csdn.net/Fighting_gua_biu/article/details/113602160
今日推荐