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
を使うのが手っ取り早そう。