天天看点

C++STL容器总结篇之string

1. string对象的定义和初始化以及读写

string s1	      	, 默认构造函数,s1为空串
string s2(s1)   	, 将s2初始化为s1的一个副本
string s3("valuee") , 将s3初始化一个字符串面值副本
string s4(n,'c')    , 将s4 初始化为字符'c'的n个副本
cin>>s5  			, 读取有效字符到遇到空格
getline(cin,s6)  	, 读取字符到遇到换行,空格可读入,知道‘\n’结束
getline(cin,s7,'a') , 一个直到‘a’结束,其中任何字符包括'\n'都能够读入
           

2. string对象操作

s.empty()  				, 判断是否为空,bool型
s.size() 或 s.length()  , 返回字符的个数
s[n]  					, 返回位置为n的字符,从0开始计数
           

s1+s2 连接,看下面例子:

可用此方法给字符串后面添加字符如:s=s+‘a’;

string s2=s1+", ";  		 , 对,把一个string对象和一个字符面值连接起来是允许的
  string s4="hello "+", ";   , 错,不能将两个字符串面值相加
  string s5=s1+", "+"world"; , 对,前面两个相加相当于一个string对象;
  string s6="hello" + ", " + s2;  ,错
           

(注:字符串尾部追加还可用s.append(“abc”)函数添加)

s1=s2  		  , 替换
s1==s2 		  , 判断是否相等,返回true或false
!=,<,<=,>,>=  ,字符串比较,两个字符串短的与长的前面匹配,短的小于长的
           

3. string对象中字符的处理(头文件cctype)

isalnum(c)  , 如果c是字母或数字,返回 true
isalpha(c)  , 如果c是字母,返回true
iscntrl(c)  , c是控制符,返回true
isdigit(c)  , 如果c是数字,返回true
isgraph(c)  , 如果c不是空格,则可打印,,则为true
islower(c)  , 如果c是小写字母,则为true
isupper(c)  , 如果c是大写字符,则为true
isprint(c)  , 如果c是可打印的字符,则为true
ispunct(c)  , 如果c是标点符号,则为true
isspace(c)  , 如果c是空白字符,则为true
isxdigit(c) , 如果c是十六进制数,则为true
tolower(c)  , 如果c是大写字符,则返回其小写字母,否则直接返回c
toupper(c)  , 跟tolower相反
           

4. string对象中的函数

4.1 插入函数

s.insert( it , p ) 		, 把字符串p插入到it的位置
s.insert(p,n,t)   		, 迭代器p元素之前插入n个t的副本
s.insert(p,b,e)     	, 迭代器p元素之前插入迭代器b到e之间的所有元素
s.insert(p,s2,poe2,len) , 在下标p之前插入s2下标从poe2开始长度为len的元素
s.insert(pos,cp,len)  	, 下标pos之前插入cp数组的前len个元素。
           

4.2 替换函数

s.assign(b,e)  			, 用迭代器b到e范围内的元素替换s
s.assign(n,t)  			, 用n个t的副本替换s
a.assign(s1,pos2,len)	, 从s1的下标pos2开始连续替换len个。
s.replace ( 3 , 3 , " good " )    从第三个起连续三个替换为good
s.substr(i,j)			, 表示的是从索引位置i开始,连续的j个字符组成的字串  //string::npos  判断字符串是否结束
           

4.3 删除函数

s.erase( 3 )||s.erase ( 0 , 4 ) ;  删除第四个元素或第一到第五个元素
           

4.4 其他函数

s.find ( " cat " ) 		      , 超找第一个出现的字符串”cat“,返回其下标值,查不到返回 4294967295,也可查找字符;
						        通常与string::npos搭配使用 
s.append(args)			      , 将args接到s的后面
s.compare ( " good " )        , s与"good"比较相等返回0,比"good"大返回1,小则返回-1;
reverse ( s.begin(), s.end () )  反向排序函数,即字符串反转函数
sort(s.begin(). s.end())      , 对字符串进行排序
           

示例代码:

#include<iostream>
#include<algorithm>
#include<list>

using namespace std;

int main(){
	string s1 = "qwerfhgt";

	if(s1.find("fg")==string::npos){
		cout << "s1中没有 fg " << endl;
	}

	sort(s1.begin(), s1.end());
	cout << "排序之后:" << s1 << endl;

	reverse(s1.begin(), s1.end());
	cout << "反序之后" << s1 << endl;

	return 0;
}
           

运行结果:

C++STL容器总结篇之string

参考博客https://www.cnblogs.com/lanclot-/p/11142202.html

继续阅读