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

 更新时间:2023年06月16日 09:35:23   作者:西里都有的吗  
这篇文章主要介绍了C++:string字符串的切片方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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;
	}
}

总结

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

相关文章

  • C语言中不定参数 ... 的语法以及函数封装

    C语言中不定参数 ... 的语法以及函数封装

    不定参数是指函数可以接收不确定个数的参数,下面这篇文章主要给大家介绍了关于C语言中不定参数 ... 的语法以及函数封装的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 使用Cline+deepseek实现VsCode自动化编程

    使用Cline+deepseek实现VsCode自动化编程

    Cline是一个免费且强大的VSCode插件,可以接入多种大模型API进行对话式编程,本文主要介绍了使用Cline+deepseek实现VsCode自动化编程,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01
  • vs2022项目文件夹内.vs文件夹容量虚高问题的解决

    vs2022项目文件夹内.vs文件夹容量虚高问题的解决

    经常会发现VS的项目文件夹占用空间很大,本文主要介绍了vs2022项目文件夹内.vs文件夹容量虚高问题的解决,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • C语言中查找字符在字符串中出现的位置的方法

    C语言中查找字符在字符串中出现的位置的方法

    这篇文章主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下
    2015-08-08
  • C语言基于EasyX库实现有图形界面钟表

    C语言基于EasyX库实现有图形界面钟表

    这篇文章主要介绍了C语言基于EasyX库实现有图形界面钟表,直线转动端点计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++连连看判定图形消除算法

    C++连连看判定图形消除算法

    这篇文章主要为大家详细介绍了C++连连看判定图形消除算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • C语言实现三子棋游戏附注释

    C语言实现三子棋游戏附注释

    这篇文章主要为大家详细介绍了C语言实现三子棋游戏附注释,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 利用C++如何实现一个阻塞队列详解

    利用C++如何实现一个阻塞队列详解

    这篇文章主要给大家介绍了关于利用C++如何实现一个阻塞队列的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C++实现简单扫雷游戏

    C++实现简单扫雷游戏

    这篇文章主要为大家详细介绍了C++实现简单扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C++中的不规则二维数组实现代码

    C++中的不规则二维数组实现代码

    本文介绍了一个在C++中保存不定长二维数组的数据结构,在这个结构中,我们使用了一个含有指针和数组长度的结构体,用这样的一个结构体构造一个结构体数组,用于存储每一个不定长的数组,感兴趣的朋友一起看看吧
    2024-03-03

最新评论