C/C++ 字符串分割

读取文件行并分割行中字符串:C/C++以及python实现 一、问题描述 给定一文件,依次读取文件中各行的字符串(字符串之间以空格分开)。 例如:文件test.txt中有如下内容: first  second  third  forth  (第一行) fifth  sixth seventh   (第二上) ... (其他行) 则读取的内容依次为:   first  second  third  forth   fifth  sixth 阅读详情

这篇博客是代码记录,在做项目时有需要将一个字符串按一个字符去分割成多个字符串,然后自己写了一个函数去实现,可行,现在把这个函数记录下来。

实现方法和网上其他介绍类似!


需要添加头文件:
#include <stdio.h>
#include <vector>
#include <string>
#include <string.h>

代码:

/**********************************************************
 *
 * 功能:
 *		将一个字符串按照特定的一个字符去分割成多个子字符串	
 *
 * 参数:
 *		str:待分割的字符串
 *		c:分隔符,他是一个字符串
 *
 * 返回值:
 *		返回一个vecotr容器对象,里面存储分割出来的字符串(如果字符串是空,或者字符串没有分隔符,则返回空的vector容器对象)
 *
 **********************************************************/
std::vector<std::string> _split(std::string str, std::string c) {
	std::vector<std::string> vec;

	// 合法性检查
	if (str.empty() || c.empty()) {
		return vec;
	}

	// 当在字符串中没有检查到分隔符时,返回空的vector容器
	int ret = str.find(c, 0);
	if (ret == -1) {
		return vec;
	}

	char *p;

	// 区分此函数是在Windows环境调用还是Linux环境调用
#if defined (_WIN64) || defined (WIN32) || defined (_WIN32) 
	//printf("---Windows---\n");

	char *buf;
	p = strtok_s((char *)str.c_str(), c.c_str(), &buf);		// 获得第一个分割出来的字符串
	while (p) {
		vec.push_back(p);				// 插入容器中
		p = strtok_s(NULL, c.c_str(), &buf);	// 获取下一个分割出来的字符串
	}

#else
	//printf("---Linux---\n");
	char *buf;
	p = strtok((char *)str.c_str(), c.c_str());		// 获得第一个分割出来的字符串
	while (p) {
		vec.push_back(p);				// 插入容器中
		p = strtok(NULL, c.c_str());	// 获取下一个分割出来的字符串
	}

#endif


	return vec;
}

测试:

int main(void) {


	std::vector<std::string> vec = _split("中文|English|汉语|粤语|abc", "|");

	for (int i = 0; i < vec.size(); i++) {
		printf("%s, ", vec.at(i).c_str());
	}

	return 0;
}

运行截图:
在这里插入图片描述

没问题,完毕!


总结:
主要是因为在Linux系统做项目时,需要用到,然后就自己写了一个;后来想,如果在Windows系统中要使用呢,于是就将其改成了这样的一个版本,供自己以后在Windows和Linux中使用!

有需要的朋友也可以拿取!

C++ 字符串分割(根据特殊符号提取数据) 阅读详情

相关推荐

c++ string通过指定的分隔符分割字符串

通过string::find_first_of()函数找到分割标志在字符串中的位置

m0_60352504的博客 1559

C++中string如何实现字符串分割函数split()——4种方法

C++分割字符串 四种方法

m0_58086930的博客 12万+

告别代码丢失!用Git+Gitee管理你的Keil5单片机项目(保姆级图文教程)

本文详细介绍了如何利用Git和Gitee高效管理Keil5单片机项目,解决嵌入式开发中的代码丢失问题。通过精准配置.gitignore文件、设计适合团队的协作流程以及搭建安全备份体系,开发者可以轻松实现版本控制,提升工作效率。特别针对Keil工程的特殊文件类型,提供了实用的过滤规则和操作技巧。

weixin_33686714的博客 470

C++ string字符串分割

采用C语言中的strtok 函数来进行分割 strtok函数包含在头文件<string.h>中,对于字符数组可以采用这种方法处理。当然也可以将字符数组转换成字符串之后再使用法一。测试代码如下 int main() { string str= "a,b*c,d"; const char *sep = ",*"; //可按多个字符来分割 char *p; p = strtok((char*)str.c_str(), sep); while (p){ printf("%s ", p);

qq_38616559的博客 4413

SPAD 单光子雪崩二极管

SPAD,全称为,是一种高灵敏度的光电探测器件,能够在非常低的光照水平下检测单个光子。SPAD在工作时,当一个光子被探测器吸收后,能够触发一个雪崩效应,产生一个可以被检测到的电信号。

qq_42786033的博客 1万+

ThinkPHP 8.1 + think-swoole 4.1 实战:5分钟搞定WebSocket聊天室(附完整代码)

本文详细介绍了如何使用ThinkPHP 8.1和think-swoole 4.1快速构建高并发WebSocket聊天室。通过5分钟实战教程,开发者可以轻松实现用户列表、消息广播等核心功能,支持2000+并发连接,适用于客服系统、在线协作等实时通信场景。

ol789012345的博客 126

C++如何做字符串分割(5种方法)

1、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。 其它:strtok函数线程不安全,可以使用strtok_r替代。 示例: //借助strtok实现split #include <string.h> #include <stdio.h&

听风雨 14万+

HMC5883L磁力计驱动开发:I²C通信、校准与FreeRTOS集成

磁力计是惯性导航与电子罗盘系统的核心传感器,其输出原始磁场数据需经精确采集、单位换算与误差补偿才能用于姿态解算。基于各向异性磁阻(AMR)原理的三轴磁力计,如HMC5883L,依赖稳定I²C通信获取12位有符号磁场采样值,并通过增益配置、硬软铁校准及温度补偿提升物理量精度。在嵌入式实时系统中,驱动层须保障数据的时间一致性与抗干扰鲁棒性,避免总线挂死、字节错位或量程误配等典型问题。本文围绕HMC5883L这一广泛使用的停产但仍在产线服役的磁传感器,详解寄存器配置、定点单位转换、八方位校准算法及FreeRTOS

weixin_42594427的博客 145

c/cpp中如何分割字符串,类似于split的功能

C标准库中strtok的使用相关适宜,有关于strtok的非线程安全特质,以及strtok的替代函数strsep的用法

bg2bkk的专栏 1万+

CKA-CN考试之路----1

后的的任意位置,但-n 和autoscale 必须是相连的.后面不再对命名空间部分做解释了.说明配置正确,如果无法保存退出,再次检查对齐.不用怀疑一定是复制的时候少了字母或者对齐出错.运行以下命令确认红色箭头的值和题目要求是否一致。将文档中的内容复制并粘贴到对应位置.,后续不再提醒yaml的对齐。确认脚本check1.sh。

Q先生 606

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信号方面,常见的格式有RGB888、RGB666、RGB565。为什么有什么多选择,主要还是取决于soc pin脚的多少来定。当然,pin脚越多,显示的颜色就越精准,还原度就越高。 举例来说,假设

嵌入式-老费,一个分享专业嵌入式知识的blog 2792

c/c++ 字符串分割

c/c++ 字符串分割 vector<string> split_string(const char *str, const char *pattern) { char * strc =(char*)str; vector<string> res; char* temp = strtok(strc, pattern); while(temp...

JSON_ZJS的博客 558

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 640

C/C++语言以某符号分割字符串

C/C++语言以某符号分割字符串 https://blog.youkuaiyun.com/u012206617/article/details/89850280 版权 实例一 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char test_str[] = "this,is,a,,,test"; char *pt...

星米豪乐园 637

【BUG已解决】pip install 出现 error: Microsoft Visual C++ 14.0 or greater is required 解决方案

方案磁盘占用适用场景推荐指数安装Build Tools3-6GB长期Windows Python开发⭐⭐⭐⭐⭐寻找预编译wheel无额外占用只是想快速装上某个包⭐⭐⭐⭐⭐用conda安装视包而定已经在用conda环境⭐⭐⭐⭐⭐升级到新版本无额外占用库本身有更新的预编译版本⭐⭐⭐⭐使用WSL2需要额外配置Linux子系统频繁遇到Windows编译问题⭐⭐⭐⭐的核心是Windows 缺少本地 C/C++ 编译器,而目标包需要在本机编译。先看是否有捷径。

博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

c/c++ 原生字符串分割简易方法

c/c++不像其它脚本语言可以方便的对字符串进行分割 如boost中的split php中的explode python中的split 等。。。 其实c/c++也可以完成,只不过没有简单的一个函数来完成 但stringstream 与 getline的组合却可以非常完美的解决这个字符串分割问题; 示例如下: cat     csplit.cpp #incl

cloudusers的专栏 1409

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C/C++字符串分割

C/C++语言用于字符串分割的函数 * count: 分割后的字符串长度 * limit: 分割多少次char ** strsplit(char *line, char delimeter, int *count, int limit) { char *ptr = NULL, *str = line; char **vector = NULL; *count = 0;

从旁观者的角度 597

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C/C++中的字符串分割

C/C++中的字符串分割  转自http://apps.hi.baidu.com/share/detail/37296066 字符串按照特定字符进行分割是编程时候经常要用到方法 MFC中CString和std::string 常可以用 find() + Mid() 的方

_Witch__的专栏 928

C/C++字符串的分割(类似split方法)

C++字符串的分割(类似splite方法) How to split a string in C/C++, Python and Java? Splitting a string by some delimiter is a very common task. For example, we have a comma-separated list of items from a file and we want individual items in an array. Almost all program

qq_42716357的博客 838

C/C++中的Split函数(字符串自动分割)

【转】C/C++中的Split函数(字符串自动分割) strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串,当strtok()在参数str的字符串中发现到参数delimiters的分割字符时则会将该字符改为'\0'字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。 C/C

wangzengdi的专栏 1494

C/C++如何把一个特定分隔符分割的字符串划分为一个字符串数组,strtok(char *,char*)分割函数

#include #include int main(void) { char str[] = "2015-3-22,abcd,efg,hij,klmn,opq,rst,uvw,xyz,tao";/*待分隔的原字符串*/ char seg[] = ","; /*分隔符这里为逗号comma,分隔符可以为你指定的,如分号,空格等*/ char ch

2万+

C/C++ 和 Python 中的字符串分割与拼接技巧

本文介绍了在 C/C++ 和 Python 中实现字符串分割和拼接的不同方法。这些方法各有优缺点,可以根据具体的需求和上下文选择最适合的方法。无论是处理简单的分隔符还是复杂的模式,这些技巧都能帮助你高效地处理字符串数据。

leichaohahah的博客 448

C/C++ 分割字符串的多种方式

在C/C++中, strtok被用来拆分字符串,但是如何二次拆分字符串,比如说分解GET参数?这时候就需要使用strtok的线程安全版本strtok_s,那么如何利用strtok_s来实现二次分解字符串。还有一个函数strstr同样可以用来分割字符串,文章将对此分别做说明。

没有开花的树 2万+

C/C++实现split分割字符串

C/C++实现split分割字符串    C++实现方法: #include #include #include using namespace std; void split(const string& src, const string& separator, vector& dest) {     string str = src;    

s170262941的专栏 1689
上一篇: C/C++ getcwd 获取项目的运行路径
下一篇: QT 写一个属于自己的消息弹窗MessageBox
cpp_learners
博客等级 码龄7年 1526粉丝 274原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpp_learners

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值