std::string にcsvの一行が入っているとして、
それをカンマで分割し、std::vector<std::string>に
格納したいです。
いつもはstrtokとかCStringとか使ってチマチマ切ってるんだけど
STLだとうまく書けないです。ループ使わないでいけたような。。。
STL得意な方教えてください。
#include <string>
template<typename OutputIterator>
OutputIterator
tokenize(const std::string& input,
OutputIterator result,
const std::string& delim) {
std::string::size_type first = 0;
std::string::size_type last = 0;
while ( (first = input.find_first_not_of(delim, last))
!= std::string::npos ) {
last = input.find_first_of(delim, first);
*result++ = input.substr(first,
last == std::string::npos ? last : last-first);
}
return result;
}
// おためし
#include <iostream>
#include <iterator>
int main() {
std::string input = abc,def,ghi,jkl;
tokenize(input, std::ostream_iterator<std::string>(std::cout,\n), ,);
return 0;
}
勉強なります。
サンキュでした。