c++ split 模板实现

template<typename _Fty> inline
void split(const std::string& s, const std::string& delims, _Fty op)
{
    size_t start = 0;
    size_t last = s.find(delims, start);
    while (last != std::string::npos)
    {
        op(std::move(s.substr(start, last - start)));

        last = s.find(delims, (start = last + delims.size()));
    }
    if (start < s.size())
    {
        op(std::move(s.substr(start)));
    }
}

inline
void split(const std::string& s, const std::string& delims, std::vector<std::string>& values)
{
    split(s, delims, [&values](std::string&& item) { values.push_back(std::move(item)); } );
}

int main(int, char**)
{

    std::vector<std::string> values;

    split("hello#@ffdsdf#@ffgfdg#@ gdsfd @ af#", "#", values);

    return 0;
}
时间: 2024-10-14 14:25:10

c++ split 模板实现的相关文章

c++ split模板实现

模板实现,重载+6: template<typename _Elem, typename _Fty> inline void split(const _Elem* s, const _Elem delim, _Fty op) { const _Elem* _Start = s; // the start of every string const _Elem* _Ptr = s; // source string iterator while( *_Ptr != '\0' ) { if(del

luoguP3690 【模板】Link Cut Tree (动态树)[LCT]

题目背景 动态树 题目描述 给定N个点以及每个点的权值,要你处理接下来的M个操作.操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和.保证x到y是联通的. 1:后接两个整数(x,y),代表连接x到y,若x到Y已经联通则无需连接. 2:后接两个整数(x,y),代表删除边(x,y),不保证边(x,y)存在. 3:后接两个整数(x,y),代表将点X上的权值变成Y. 输入输出格式 输入格式: 第1行两个整数,分别为N和M,代表点数和操

【仿doT前端模板】二、if else

效果预览 首先,按照惯例,我们先看doT 实现的效果: 模板: {{? it.name }} <div>嗨, {{=it.name}}!</div> {{?? it.age === 0}} <div>我猜应该还没人给你起名字吧?</div> {{??}} 你已经 {{=it.age}} 岁了但是你还没有名字? {{?}} 数据 结果 {name:'十一川'} <div>嗨, 十一川! </div> {age:0} <div>

SpringMVC导入Excule并解析Excule中的数据以及下载Excule模板

把Excule导入,并把Excule中的数据解析出来,包装成对象的属性,保存在数据库中: Excule中的数据: 1.web.xml的配置: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/java

Angular 2 模板语法与常用指令简介

一.模板语法简介 插值表达式 <div>Hello {{name}}</div> 等价于 <div [textContent]="interpolate(['Hello'], [name])"></div> 模板表达式 1.属性绑定 1.1输入属性的值为常量 <show-title title="Some Title"></show-title> 等价于 <show-title [titl

artTemplate模板引擎的源码拜读

最初接触的模板引擎还是基于node的ejs,当时觉得很神奇原来还可以这么玩,后来随着学习的深入,使用过jade,doT等,当然还有一些比较火的诸如juicer.underscore还没有深入接触,直到今年上半年由于项目需要就想着要不试试腾讯的artTemplate,感觉牛逼也吹的挺响的.开始了解后,觉得它比我之前使用过的jade.doT都好用,调试神马的也方便很多,采用预编译的方式也让性能非常优越. 其实看了源码后简单的总结出来就是这么一句话:就是先获取html中对应的id下得innerHTML

模板化的七种排序算法,适用于T* vector&lt;T&gt;以及list&lt;T&gt;

最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板纯属于偷懒,更方便于测试代码的有效性,等代码写完也懒得去改了.下面开始介绍这段代码,有什么不对的地方欢迎前来指正. 一共写了七种排序,插入排序InsertSort.堆排序HeapSort.快速排序QuickSort.合并排序MergeSort,计数排序CountingSort,基数排序RadixSo

JavaScript模板引擎实现数据交互

经过1年的磨练,近期终于稍微明白到,前端是怎么做到企业要求的:数据交互. 1,ajax+json这个是必须学的,但没问题,我们可以通过这个博客来慢慢了解怎么回事? 2,可以通过JS框架和JS模板来实现,但最后还是要用到ajax+json的. 注意:个人建议 假如项目页面数量是少于50-100个的,那么推荐使用JS模板:如果大于100个的用JS框架.各有各优势嘛. 今晚的博客分几次写完,看到这句话删除就证明已经写完了. 先分享JS模板的内容:我这次推荐使用百度的模板引擎,因为他比腾讯的art运行速

latex 撰写科技报告模板

1.Latex简介 latex在撰写科技论文.科技报告方面有着强大的优势,在撰写复杂的数学公式和作图方面都很方便,适合有一定代码经验的人使用. 一个框架: \begin{document} \begin{CJK*}{UTF8}{gbsn} ........... \end{CJK*} \end{document} 1.1 部分宏命令 \textbf{}%文本黑体    mathbf{}%数学符号黑体    \limits_{i=1}^{n}%符号正上正下方   A_i^n%符号右下右上方 2.L