C++分隔字符串split
split
C++标准库中没有提供split分隔字符串的函数,哎。
实现一
下面的实现需要指定分隔符的集合delimiters,以及是否将连续的分隔符看作同一个分隔compress :
enum class TokenCompress {
On,
Off
};
/**
* 分隔字符串
* @param s 输入字符串
* @param delimiters 分隔符集合
* @param compress 是否将连续的分隔符看作同一个分隔
* @return 分隔的子字符串列表
*/
std::vector<std::string> split(const std::string& s, const std::string& delimiters, TokenCompress compress) {
std::vector<std::string> tokens;
std::string::size_type beg = 0;
std::string::size_type end;
while (std::string::npos != (end = s.find_first_of(delimiters, beg))) {
tokens.push_back(s.substr(beg, end - beg));
beg = TokenCompress::On == compress ? s.find_first_not_of(delimiters, end) : end + 1;
}
tokens.push_back(std::string::npos == beg ? std::string() : s.substr(beg));
return tokens;
}
使用boost::split
在#include <boost/algorithm/string.hpp>中,提供了boost::split函数:
#include <boost/algorithm/string.hpp>
int main(int argc, char const *argv[])
{
std::vector<std::string> tokens;
boost::split(tokens, "12 34", boost::is_any_of(" "), boost::token_compress_on);
for (auto& t : tokens) {
std::cout << "[" << t << "]" << std::endl;
}
return 0;
}
C++分隔字符串split的更多相关文章
- Python使用split使用多个字符分隔字符串
Python的str类有split方法,但是这个split方法只能根据指定的某个字符分隔字符串,如果要同时指定多个字符来分隔字符串,该怎么办呢? 幸运的是python的re模块中提供的split方法可 ...
- SQL自定义函数split分隔字符串
SQL自定义函数split分隔字符串 一.F_Split:分割字符串拆分为数据表 Create FUNCTION [dbo].[F_Split] ( @SplitString nvarchar(max ...
- 字符串的分隔方法 split()
java中的split()的方法 string.split([separator,[limit]]) 参数 string (必选),要被分解的 String 对象或文字.该对象不会被 split 方法 ...
- C++中int转为char 以及int 转为string和string 转int和空格分隔字符串
1.对于int 转为char 直接上代码: 正确做法: void toChar(int b) { char u; ]; _itoa( b, buffer, ); //正确解法一 u = buffer[ ...
- java 分隔函数split("",-1)的用途
转: java 分隔函数split("",-1)的用途 2017年12月14日 11:37:58 jaryle 阅读数:8517 1.如果字符串最后一位有值,则没有区别, 2. ...
- Nodejs使用多个分隔符分隔字符串
在nodejs中当需要使用多个分隔符分隔字符串时,可以使用正则表达式作为split函数的参数,具体使用如下: var str = "111@222#333 444@555# 666 777& ...
- sql server 获取分隔字符串后的长度
--方法1 --sql 分隔字符串,返回个数 CREATE function f_splitLen_1 ( @str varchar(1024), --要分割的字符串 @split varc ...
- C#字符串Split方法的误区
string s = "aaa1bbb2ccc1ddd"; string[] ss = s.Split("12".ToCharArray()); ...
- C#分隔字符串时遭遇空值
在C#中分隔字符串时,按特定字符进行分隔的时候可能会遇到空值,如何我现在传入的是Id的字符串,如:"1501,1502,1503,,1505",以逗号分隔,由于各种原因,导致传入的 ...
随机推荐
- Tomcat三实例cluster多播方案共享session再配置
昨天已经将两实例cluster多播方案共享Session配置成功,其中的关键就在于server.xml中,engine->channel->receiver节点中address得写成自己的 ...
- Git——从安装到连接GitHub
安装Git Windows平台上很轻松的,直接点击地址Git下载进行下载,之后基本就是下一步,安装成功. 在所需要操作的项目下右键,点击"Git Bash Here"弹出Git命令 ...
- python django 简单接口测试页面
项目创建订单只能是接口创建的,之前都是用jar包放到jmeter里调用下单,给产品或者运维用不太方便,就想用django写一个带前端界面的下单web程序 项目结构 代码,比较渣 # coding=ut ...
- python中一次性input3个整数,并用空格隔开怎么表示
a,b,c=map(int,input('请输入3个整数用空格隔开:').split(' ')) map的使用方法:map(函数名,循环体)
- Linux 系统中环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别
/etc/profile./etc/bashrc.~/.bashrc的区别 1> etc目录下存放系统管理和配置文件 (系统配置) etc/profile: profile为所有的用户 ...
- 记tp5.1使用composer PhpOffice的xlsx表格文件导入数据库
在项目环境下composer require phpoffice/phpspreadsheet在项目中引用use PhpOffice\PhpSpreadsheet\IOFactory; 下面是 上传x ...
- Vue开发电子书app
ebook-app 在根目录下创建vue.config.js文件 module.export = { baseUrl: process.env.NODE_ENV === 'production' ? ...
- 微信小程序问题汇总
一.消息推送配置 1.解析失败.请检查信息是否填写正确 服务器地址中不能使用其他的端口号,把端口号去掉,默认就是走80或443端口,另外这个地址需要外网访问,我使用了nat123映射了80端口,这个工 ...
- gRPC-go 入门(1):Hello World
摘要 在这篇文章中,主要是跟你介绍一下gRPC这个东西. 然后,我会创建一个简单的练习项目,作为gRPC的Hello World项目. 在这个项目中,只有很简单的一个RPC函数,用于说明gRPC的工作 ...
- Java Web项目获取客户端和服务器的IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...