C++ STL string常用用法详解

6.3 string的常见用法详解

为了方便对字符串进行操作,对字符串常用的需求功能进行了封装。要是有string,需加头文件#include

1. string的定义

string str;

2.string中内容的访问

(1). 通过下标访问

(2). 通过迭代器访问

需要注意定义: string::iterator it;

#include 
#include 
using namespace std;
int main(){
	string str = "abcd";
	for(string::iterator it = str.begin(); it != str.end(); it++){
		cout<<(*it)<<' ';
	}
	return 0;
}
输出结果:
    a b c d

3. string常用函数实例解析

(1). operator+= 这是string的加法,可以将两个string直接凭借起来

(2). compare operator 两个string类型可以直接使用==、!=、 <、 >、 <=、 >=比较大小,比较规则是字典序

(3). length()/size() 返回string的长度

(4). insert() 插入字符串

· insert(pos, string), 在pos号位置插入字符串string
· insert(it, it2, it3),it为原字符串的欲插入位置,it2和it3为待插字符串的首位迭代器,用来表示串[it2, it3)将被插在it的位置上

(5). erase() 有两种用法:删除单个元素、删除一个区间内的所有元素

·str.earse(it) 删除单个元素,it为需要删除的元素的迭代器
·str.earse(first, last)其中first为需要删除的区间的起始迭代器,而则为需要删除的区间的 末尾迭代器的下一个地址,也即为删除[first, last)
· str.erase(pos, length) 其中pos为需要开始删除的起始位置,length为删除的字符个数

(6). clear() 清空string中的数据

(7). substr(pos, len) 返回从pos号位开始、长度为len的子串

(8). string::npos 是一个常数,其本身的值为-1。string::npos 用以作为find函数失配的返回值

(9). str.find(str2) 当str2是str的子串时,返回其在str中第一次出现的位置,如果str2不是str的子串,那么返回string::npos

str.find(str2, pos) 当str的pos号位开始匹配str2,返回值与上同

(10). replace(pos, len, str2)把str从pos号位开始、长度为len的子串替换为str2

replace(it1, it2, str2)把str的迭代器[it1, it2)范围的子串替换为str2

实践

//1、 字符串string
#include 
#include 
#include 
#include  
using namespace std;
int main(){
	string s;
	//cin>>s;
	s = "abcdefg123456"; 
	reverse(s.begin(), s.end());	//反转 
	cout<<"字符串反转后:"<<s<<endl;
	int len = s.length();			//长度
	cout<<"字符串的长度为: "<<len<<endl;
	string str1 = s.substr(3, 4);	//截取方法一  从下标为3开始,截取4个字符 
	string str2 = s.substr(3);		//截取方法二  从下标为3开始,截取到结束 
	cout<<"截取方法一: "<<str1<<endl;
	cout<<"截取方法二:"<<str2<<endl;	
	s.insert(3, "LOVE");			//字符串插入
	cout<<"字符串插入:"<<s<<endl; 
	s.erase(3, 4);					//字符串删除
	cout<<"字符串删除:"<<s<<endl; 
	s.replace(3, 4, "LOVE");		//字符串替换
	cout<<"字符串替换:"<<s<<endl; 
	return 0;
} 

/**
输出:
原字符串:abcdefg123456
字符串反转后:654321gfedcba
字符串的长度为: 13
截取方法一: 321g
截取方法二:321gfedcba
字符串插入:654LOVE321gfedcba
字符串删除:654321gfedcba
字符串替换:654LOVEfedcba
*/

你可能感兴趣的:(C++(算法),字符串,c++)