2017-03-17 43 views
1
#include <iostream> 
#include <regex> 
#include <sstream> 
#include <vector> 

std::vector<std::string> split(const std::string &str) { 
    std::regex rgx(""); //what goes here?? 
    std::smatch base_match; 
    std::regex_search(str, base_match, rgx); 
    return {base_match.begin(), base_match.end()}; 
} 

std::ostream &operator<<(std::ostream &os, 
         const std::vector<std::string> &strs) { 
    for (const auto &str : strs) { 
    os << "-> " << str << "\n"; 
    } 
    return os; 
} 

int main(int argv, char **argc) { 
    std::cout << split("asdasd,dasdasd,adadada"); 
    return 0; 
} 

我想有一個正則表達式的解決方案(不使用sregex_token_iterator或升壓),讓子匹配一個逗號分隔的列表和後/逗號之前跳過逗號(和空格分隔的列表太)。標記化而逗號使用std正則表達式

expected output: 
asdasd 
dasdasd 
adadada 
+0

爲什麼?例如,重複應用'str.find(',')'和'str.substr'會出現什麼問題? – Chowlett

+0

所以你想要一個正則表達式,將讀取空格分隔列表或逗號分隔列表或空格和逗號分隔列表的組合? – NathanOliver

+0

@NathanOliver我想要它來處理這樣的事情{a,b,c,d} – mkmostafa

回答