C++ 容器 string类

C++ 容器 string类

一、string类的构造函数
1 默认构造 string s1;
2 拷贝构造 string s2(s1);
3 有参构造 string s3(“aaa”);
4 两个参数有参构造 string s4(3,‘c’);

// string类的构造函数
    string s1;       //默认构造
	string s2(s1);   //拷贝构造
	string s3("aaa");    //有参构造
	string s4(3, 'c');    //两个参数有参构造
	cout << "字符串s1为:"<<s1 << endl;
	cout <<"字符串s2为:"<< s2 << endl;
	cout <<"字符串s3为:"<< s3 << endl;
	cout <<"字符串s4为:"<< s4 << endl;
字符串s1为:
字符串s2为:
字符串s3为:aaa
字符串s4为:ccc

二、string类的赋值操作
1、string& assign(const char *s,int n); 把字符串s的前n个字符串赋给当前的字符串
2、string& assign(const string &s,int start,int n); 将s从start开始n个字符赋值给字符串

//string类的赋值操作
string s5;
	//string& assign(const char *s,int n);  把字符串s的前n个字符赋给当前的字符串
	s5.assign("asddfsdsgdsgd", 8);
	cout << "s5=" << s5 << endl;

	//string& assign(const string &s,int start,int n); 将s从start开始n个字符赋值给字符串(从0开始计算)
	string s6 = "asdfdgfaghd";
	string s7;
	s7.assign(s6, 4, 5);
	cout << "s7=" << s7 << endl;

输出:

s5=asddfsds
s7=dgfag

三、string类的存储操作
1、通过下标获取字符[]
2、通过at获取字符
3、at和[]的区别:[]访问越界直接挂掉,而at访问越界会自动抛出一个异常

    string s = "hello world!";
	for (int i = 0; i < s.size(); i++)
	{
    
    
		cout << s[i] << endl;//通过[]获取字符
		cout << s.at(i) << endl;//通过at获取字符
	}
	try
	{
    
    
		//s[100];
		s.at(100);
	}
	catch (out_of_range &e)
	{
    
    
		cout << e.what() << endl;
	}
h
h
e
e
l
l
l
l
o
o


w
w
o
o
r
r
l
l
d
d
!
!
invalid string position

四、string的拼接操作
s.append(args) ,将args追加到s。返回一个指向s的引用

    string str1 = "我";
	string str2 = "爱北京";
	str1 += str2;
	cout << "str1="<<str1 << endl;
	string str3 = "天安门";
	str1.append("故宫");
	cout << "新的str1为:" << str1 << endl;

输出:

str1=我爱北京
新的str1为:我爱北京故宫

五、string的查找与替换
1、find(),找到子串返回第一个出现的位置,如果找不到子串,直接返回-1。
2、rfind(),rfind的区别是“r”代表“right”
3、replace代表替换,替换从pos开始n个字符为字符串
s.replace(range,args) 删除s中范围range内的字符,替换为args指定的字符。range或者是一个下标和一个长度,或者是一对指向s的迭代器。返回一个指向s的引用

string str1 = "ABCDEFGHIJKDE";
	int pos1 = str1.find("DE");
	int pos2 = str1.rfind("DE");
	cout << "pos1=" << pos1 << endl;
	cout << "pos2=" << pos2 << endl;
	str1.replace(3, 4, "126");
	cout << "str1"<<str1 << endl;

输出:

pos1=3
pos2=11
str1ABC126HIJKDE

六、string字符串的比较
compare函数类似strcmp,根据s是等于、大于还是小于参数指定的字符串,s.compare返回0、正数或负数。

string str1 = "ABCDE";
	string str2 = "ABCDE";
	if (str1.compare(str2) == 0)
	{
    
    
		cout << "str1==strr2" << endl;
	}
	else if (str1.compare(str2) > 0)
	{
    
    
		cout << "str1>str2" << endl;
	}
	else
	{
    
    
		cout << "str1<str2" << endl;
	}

输出:

str1==strr2

七、string子串
s.substr(pos,n) 返回一个string ,包含s中从pos开始的n个字符的拷贝。pos的默认值为0。n的默认值为s.size()-pos,即拷贝从pos开始的所有字符

string str = "ABCDE";
	string subStr = str.substr(1, 3);
	cout << "subStr=" << subStr << endl;
	string email = "[email protected]";
	int pos = email.find("@");
	string userName = email.substr(0, pos);
	cout << userName << endl;

输出

subStr=BCD
782347428

八、string的插入和删除
1、s.insert(pos,args),在pos之前插入args指定的字符。pos可以是一个下标或一个迭代器。接收下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。
2、s.erase(pos,len) ,删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用。

    string str = "hello";
	str.insert(1, "111");//插入字符串
	cout << "str=" << str << endl;
	str.erase(1, 3);//删除从Pos开始的n个字符
	cout << "str=" << str << endl;

输出:

str=hlllello
str=hello

猜你喜欢

转载自blog.csdn.net/Little_XWB/article/details/108018758
今日推荐