I would simply like to split a string into an array using a character as the split delimiter. (Much like the C#'s famous .Split()
function. I can of course apply the brute-force approach but I wonder if there anything better than that.
So far the I've searched and probably the closest solution approach is the usage of strtok()
, however due to it's inconvenience(converting your string to a char array etc.) I do not like using it. Is there any easier way to implement this?
Note: I wanted to emphasize this because people might ask "How come brute-force doesn't work". My brute-force solution was to create a loop, and use the substr()
function inside. However since it requires the starting point and the length, it fails when I want to split a date. Because user might enter it as 7/12/2012 or 07/3/2011, where I can really tell the length before calculating the next location of '/' delimiter.
Using vectors, strings and stringstream. A tad cumbersome but it does the trick.
#include <string>
#include <vector>
#include <sstream>
std::stringstream test("this_is_a_test_string");
std::string segment;
std::vector<std::string> seglist;
while(std::getline(test, segment, '_'))
{
seglist.push_back(segment);
}
Which results in a vector with the same contents as
std::vector<std::string> seglist{ "this", "is", "a", "test", "string" };