// Copyright (C) 2011 Michael McMaster // // This file is part of libzipper. // // libzipper is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // libzipper is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with libzipper. If not, see . #ifndef zipper_split_hh #define zipper_split_hh #include namespace zipper { template void split(const std::string& in, char delim, OutputIterator out) { std::string::size_type start(0); std::string::size_type pos(0); while (pos < in.size()) { if (in[pos] == delim) { if (pos != start) { *out = in.substr(start, pos - start); ++out; } ++pos; start = pos; } else { ++pos; } } if (pos != start) { *out = in.substr(start, pos - start); ++out; } } } #endif