C++:string字符串的切片方式

来自:网络
时间:2023-07-24
阅读:
目录

C++:string字符串的切片

string字符串在C++中不能直接进行切片操作,需要借助函数find和substr进行

1.substr用于进行已知序号的切片操作 

substr语法为 :

string对象.substr(起点 , 切片长度)

operate_str = initial_str.substr(0, 3);

代码演示如下

    //使用substr函数实现已知序号的字符串切片
    string initial_str = "0123456789";
    string operate_str;
    operate_str = initial_str.substr(0, 3); //从0号开始,切片长度为3,即截取0到(0 + 3 - 1)号
    cout << "operate_str = " << operate_str << endl; //输出结果为012

2.find函数和substr函数

配合用于进行已知特征字符串的字符串切片

find函数处理对象中存在特征字符串时返回特征串第一个字符的序号,若对象中不存在特征字符串则返回-1

find函数语法为:

string对象.find(特征字符串)

int start = initial_str.find(key1); 

以下配合substr实现已知特征字符串的字符串切片

    //使用substr函数配合find函数实现已知特征串的字符串切片
    string key1 = "23"; //定义特征串
    int len = 5; //定义切片长度
    int start = initial_str.find(key1); //返回特征串第一个字符的序号,此处为2
    string key2 = "abc"; //测试不存在特征串返回值
    int result = initial_str.find(key2);
    cout << "result = " << result << endl; //对象中不存在特征串,此处输出为 -1
    operate_str = initial_str.substr(start, len); //从start开始,切片长度为len,即截取start到(start + len - 1)号
    cout << "operate_str = " << operate_str << endl; //输出结果为23456

(变量与只使用substr时相同)

C++特定分隔符将字符串进行分割

使用特定分隔符’\n’将字符串进行分割,如传参数“2023\n01\n13”,则输出结果为

2023
01
13

void SplitString(std::string str){
	if(str.empty()){
		return;
	}
	vector<std::string> res;
	const char split = '\n'; //分割符
	std::string strs = str + split;
	size_t i = 0;
	size_t pos = strs.find(split,i);
	while(pos ! = strs.npos){
		string temp = strs.substr(i, pos - i);
		res.push_back(temp);
		i = pos + 1;
		pos = strs.find(split,i) 
	}
	for(int i=0;i<res.size();i++){
		cout>>res.[i]>>endl;
	}
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

返回顶部
顶部