美文网首页
std::wstring 字符串分割 split() 实现

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

作者: 蓝黑记忆 | 来源:发表于2016-12-28 10:30 被阅读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";"));
    

    相关文章

      网友评论

          本文标题:std::wstring 字符串分割 split() 实现

          本文链接:https://www.haomeiwen.com/subject/yzcyvttx.html