nothing-special-here nothing-special-here - 1 year ago 212
C++ Question

C++ - Split string by regex

I want to split


I have found some solutions on Stackoverflow, but most of them are splitting string by single space or using external libraries like boost.

I can't use boost.

I want to split string by regex -

I am using this g++ version
g++ (Debian 4.4.5-8) 4.4.5
and i can't upgrade.

Answer Source

You don't need to use regular expressions if you just want to split a string by multiple spaces. Writing your own regex library is overkill for something that simple.

The answer you linked to in your comments, Splitting a string in C++, can easily be changed so that it doesn't include any empty elements if there are multiple spaces.

std::vector<std::string> &split(const std::string &s, char delim,std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        if (item.length() > 0) {
    return elems;

std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;

By checking that item.length() > 0 before pushing item on to the elems vector you will no longer get extra elements if your input contains multiple delimiters (spaces in your case)