C++中常用的string库中的函数使用方法和总结

本文深入讲解C++标准库中的String类,包括初始化、输入、运算符重载、遍历、常用函数等核心内容,帮助读者全面掌握String的操作与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string

是C++标准库中的类,纯C中没有,使用时需要包含头文件#include,也可直接使用万能头文件#include<bits/stdc++.h>

String的定义及初始化

			string s1 = "hello"; //初始化字符串
			string s2 ("world"); //另一种初始化 
			string s3;  		 //初始化字符串,空字符串
			string s4(5, 'a');   //s4由连续5个a组成,即s4="aaaaa";
			string s5(s1,2,3);   //从s1的2位置的字符开始,连续3个字符赋值给s5,即s5="llo";
			string s6(s1, 1);    //从s1的2位置的字符开始,将后续的所有字符赋值给s6,即s6="ello"; 

String的输入方式:
当使用C++的cin读入字符串时,程序遇到空白字符就停止读取了。
1、直接使用cin输入 比如程序输入是:

					   "    hello   world"
					   
					   那么当我们使用如下代码时,s1得到的只是"hello"。
					   
						    string s1;
						    cin>>s1;

2、如果我们想读取一整行输入,包括空格及空格后面的字符,我们可以使用getline。

							string str;
							getline(cin, str);
							cout << str << endl;

重载的运算符

此处列举一下被重载的运算符,基本意思一目了然。其中注意“+”操作	  
		    s1 = s2;//其作用与“strcpy(string1,string2);”相同(后面有介绍strcpy函数)
		    s1 += s2;
		    s1 = s2 + s3;
		    s1 == s2;
		    s1 = "s" + s2; //正确
		    s1 = "s" + "s"; //错误,加号两边至少要有一个string类型的对象
		    s1 = "s" + s2 + "s" + "s"; //正确
			简单的说:就是按照数学思维进行运算 (前提是“+”两边必须有一个是string类型的变量)
	除此之外,还有‘+’,‘+=’,‘=’语句;

遍历string(迭代器)
遍历string中的元素时,我们可以使用类似C中的数组形式访问,如s11
在这里插入图片描述
cout << *(s1.begin()); //正确,
即访问s1[0]cout << *(s1.end()); //错误,
s1.end()指向了空若想要从后向前遍历string时,可以用到rbegin()和rend()函数。
也可以使用STL特有的迭代器访问:
string::iterator it;
for (it = s1.begin(); it != s1.end(); it++)
{ cout << *it << endl;}

常用函数

插入insert()

	string s1 = "hello";
	s1.insert(1,"ins"); 			 	 //从s1的1位置开始,插入"ins"字符串,即s1="hinsello";
	s1.insert(1, "ins", 2);				 //从s1的1位置开始,插入"ins"字符串的前2个字符,即s1="hinello";
	s1.insert(1, "ins", 1, 2);			 //从s1的1位置开始,插入"ins"字符串的从1位置开始的2个字符,即s1="hnsello";
	insert(iterator it, char c);		 //在it处插入字符c,返回插入后迭代器的位置

删除erase()

	s1. erase(first, last);				  //删除[first,last)之间的所有字符,返回删除后迭代器的位置
	s1.erase(it);				  			  //删除it指向的字符,返回删除后迭代器的位置
	s1. erase(int pos = 0, int n = npos);	  //删除pos开始的n个字符,返回修改后的字符串

查找 find()

	cout << s.find("aa", 0) << endl; //返回的是子串位置。第二个参数是查找的起始位置,如果找不到,就返回string::npos
	if (s.find("aa1", 0) == string::npos)
	{
	    cout << "找不到该子串!" << endl;
	}

清空clear()

      s1.clear()删除所有元素

判空empty()

      s1.empty()如果 s 为空则返回true ,否则为false;

开头 begin()

   s1.begin() 返回指向map头部的迭代器

末尾end()

     s1.end()返回指向map末尾的迭代器

截取substr().

	s.substr( i , length); //从 i 位置截取length长度的字符串 ,不加length表示,从指针处到末尾;

其它子函数

   equal_range()          返回特殊条目的迭代器对   
   get_allocator()         返回map的配置器    
   key_comp()          返回比较元素key的函数
   lower_bound()         返回键值>=给定元素的第一个位置
   max_size()          返回可以容纳的最大元素个数
   rbegin()          返回一个指向map尾部的逆向迭代器
   rend()          返回一个指向map头部的逆向迭代器
   size()          返回map中元素的个数   
   upper_bound()          返回键值>给定元素的第一个位置
   value_comp()          返回比较元素value的函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值