[C++代码片段] 字符串分隔

陪她去流浪 桃子 2016年04月19日 编辑 阅读次数:2855

C++的实用库函数实在太少了,远远不如PHP的多。。。

解决方案来自:Split a string in C++? - Stack Overflow

我之前也写过很多个版本,但由于没有归档,一时半会儿也不好找,所以就采用了这个简洁了。

这是我自己使用的 C++11 的版本,如对你不适用,请采用原文的回答。

#include <string>
#include <vector>
#include <sstream>
#include <iostream>

std::vector<std::string> split_string(const std::string& raw, char delimiter) {
    using namespace std;

    string str;
    vector<string> result;
    istringstream iss(raw);

    while(getline(iss, str, delimiter))
        result.push_back(move(str));

    return result; // moved
}

int main() {
    const char* strs[] = {
        "try split me",
        "one  two      three",
        " sugar, yes please",
    };

    for(auto& str : strs) {
        auto ss = split_string(str, ' ');
        for(auto& s : ss)
            std::cout << "[" << s << "] ";
        std::cout << std::endl;
    }
    return 0;
}

上面的程序将输出(在线运行):

[try] [split] [me]
[one] [] [two] [] [] [] [] [] [three]
[] [sugar,] [yes] [please]

本代码片段的功能只是纯分隔字符串,并没有去除空白等等,如有需要请自行修改。

标签:C++ · 代码片段 · 字符串