惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Secure Thoughts
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Blog of Author Tim Ferriss
B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
T
The Exploit Database - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
T
Troy Hunt's Blog
I
InfoQ
L
LINUX DO - 热门话题
WordPress大学
WordPress大学
C
Cisco Blogs
G
GRAHAM CLULEY
The Register - Security
The Register - Security
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
H
Hacker News: Front Page
小众软件
小众软件
雷峰网
雷峰网
The Hacker News
The Hacker News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Tor Project blog
博客园 - 聂微东
N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
The GitHub Blog
The GitHub Blog
腾讯CDC
P
Palo Alto Networks Blog
Scott Helme
Scott Helme

博客园 - 撬棍

【.Net】2、8、16进制转换 【.Net】执行CMD命令 【.Net】获取随机数函数 【.Net】注册程序开机启动 【.Net】把窗体“钉”到桌面上 【.Net】多语言查看MSDN 【.Net】 显示星期字符串 【.Net】 判断时间字符串正确性 【.Net】 实现窗口拖动 【.Net】 Winform 单例运行实例 [C++]函数返回值 [C++]数组参数 [C++]const的指针使用 [C++]指针类型出参 [VBA]Excel输出utf-8编码格式文件 使用WideCharToMultiByte [C语言学习]之打印万年历 - 撬棍 - 博客园 [VB6.0]让程序在任务列表和资源管理器“隐身” [InstallShield]FindAllFiles与SetFileInfo配合实现文件加多文件属性设置 [VB]修改注册表让程序开机自动运行 - 撬棍 - 博客园
【C++】split
撬棍 · 2011-03-20 · via 博客园 - 撬棍

--------------------------------------------------1-------------------------------------------------------------------

void split(const std::string& src)
{
    stringstream ss;
    ss << src;
    while (!ss.eof())
    {
        std::string content;
        std::getline(ss, content, '|');
        std::cout << content << std::endl;
    }
}

--------------------------------------------------2-------------------------------------------------------------------

#include   <vector> 
#include   <string> 
#include   <boost/algorithm/string.hpp> int main()   

std::string str("1-56-89-52-41-56 "); 
std::vector <std::string> result; 
boost::algorithm::split(result, str, boost::algorithm::is_any_of( "- ")); 

}

--------------------------------------------------3-------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////// 

// Function Name     : split 

// Description       : split "source" with "delims" into string vector. 

// Input Parameters : source -- the string with spliter

//                      delims -- the spliters 

//                      vec     -- output

//                      result -- string vector

// Return Value      : how many slice had found.

////////////////////////////////////////////////////////////////////////////// 

size_t split(const std::string& source,

              const char *delims,

              std::vector <std::string> &vec,

              bool keepEmpty /*= false*/)

{

    // find the index of which not delims

    std::string::size_type beg = source.find_first_not_of(delims); 

    std::string::size_type end; 

    std::string::size_type nextBeg = beg; 

    while(std::string::npos != beg)

    { 

        //find the index which is delims, than [beg, end] is the slice we want

        end = source.find_first_of(delims, nextBeg + 1);

        nextBeg = end; 

        if(end < beg)

        {

            //we find that case : two delims

            if(keepEmpty)

            vec.push_back(" ");

        }

       else if(std::string::npos != end)

        {

            vec.push_back(source.substr(beg, end - beg));

            //update the begin index from the end index

            beg = source.find_first_not_of(delims, nextBeg);

        }

        else

        {

            vec.push_back(source.substr(beg));

            break;

        }

    }

    return vec.size();

}