std::wstring 字符串分割 split() 实现

2016-12-28  本文已影响0人  蓝黑记忆

C++标准库里没有字符分割函数split(), 需要自己实现。

方法一####

参考StackOverflow,写了一个支持wstring的split。输入原始字符串和分隔符,输出vector<分割字符串>。核心思想是使用 wstringstream 作为 std::getline 的输入。

void split(const std::wstring &s, TCHAR delim, std::vector<std::wstring> &elems) {
    std::wstringstream ss;
    ss.str(s);
    std::wstring item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
}
std::vector<std::wstring> split(const std::wstring &s, TCHAR delim) {
    std::vector<std::wstring> elems;
    split(s, delim, elems);
    return elems;
}
vector<wstring> vec = split(L"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem", L';');//分割环境变量

方法二####

公司项目中常使用boost库,一个函数直接搞定。不过缺点也很明显,太重。

vector<wstring> vecPaths;
wstring wstrEnvPath = L"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem";
boost::algorithm::split(vecPaths, wstrEnvPath, boost::algorithm::is_any_of(L";"));
上一篇下一篇

猜你喜欢

热点阅读