C++ で std::getline を使った split

前回std::regex を使った split を実装しましたが、今回は std::getline を使った実装です。

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

int
main(){
    auto split = [](auto src, auto del){
        std::istringstream stream{src};
        std::string output;
        std::vector<std::string> result;
        while(std::getline(stream, output, del)){
            result.push_back(output);
        }
        return result;
    };

    std::string src{"homu,mami,mado"};

    for(auto&& str : split(src, ',')){
        std::cout << str << std::endl;
    }
    return 0;
}
/* output:
homu
mami
mado
*/

上のコードは多相ラムダとか使ってるので C++14 以降でしか動作しませんが、実装自体は C++03 でも動くのでレガシーな環境だと std::getline を使うのが手っ取り早そう。