| 657 | |
| 658 | template<class T> |
| 659 | static std::vector<T> string_split(const std::string & str, char delim) { |
| 660 | static_assert(!std::is_same<T, std::string>::value, "Please use the specialized version for std::string"); |
| 661 | std::vector<T> values; |
| 662 | std::istringstream str_stream(str); |
| 663 | std::string token; |
| 664 | while (std::getline(str_stream, token, delim)) { |
| 665 | T value; |
| 666 | std::istringstream token_stream(token); |
| 667 | token_stream >> value; |
| 668 | values.push_back(value); |
| 669 | } |
| 670 | return values; |
| 671 | } |
| 672 | |
| 673 | template<> |
| 674 | std::vector<std::string> string_split<std::string>(const std::string & input, char separator) |