Go back to Richel Bilderbeek's homepage.
Go back to Richel Bilderbeek's C++ page.
SeperateString is a std::string code snippet that seperates a std::string into a multiple std::strings (in a std::vector<std::string>) by a certain seperator.
I have multiple versions of SeperateString:
SeperateString #1: Seperator is a char, uses Boost String Algorithms Library
SeperateString #2: Seperator is a char, uses algorithms, short version
SeperateString #3: Seperator is a char, uses algorithms, long version
SeperateString #4: Seperator is a char, does not use algorithms
SeperateString #5: Seperator is a std::string, uses algorithms
SeperateString #6: Seperator is a std::string, does not use algorithms
Of each version of SeperateString, I also wrote some test code on it.
SeperateString #1: Seperator is a char, uses Boost String Algorithms Library
SeperateString #2: Seperator is a char, uses algorithms, short version
SeperateString #3: Seperator is a char, uses algorithms, long version
#include <vector>
#include <string>
#include <assert>
#include <algorithm>
//From http://www.richelbilderbeek.nl/CppSeperateString.htm
const std::vector<std::string> SeperateString(const std::string& input, const char& seperator)
{
std::vector<std::string> v;
typedef std::string::const_iterator Iterator;
const Iterator end = input.end();
Iterator i1 = input.begin();
{
//Copy until first comma
Iterator i2 = std::find(i1,end,',');
assert(i1!=i2);
std::string s;
std::copy(i1,i2,std::back_inserter(s));
v.push_back(s);
i1 = i2;
}
while (i1!=end)
{
//Copy from comma to (comma || end)
Iterator i2 = std::find(i1 + 1,end,',');
assert(i1!=i2);
assert(i2 == end || *i2 == ',');
std::string s;
std::copy(i1+1,i2,std::back_inserter(s));
v.push_back(s);
i1 = i2;
}
return v;
}
|
SeperateString #4: Seperator is a char, does not use algorithms
SeperateString #5: Seperator is a std::string, uses algorithms
#include <vector>
#include <string>
#include <assert>
#include <algorithm>
//From //From http://www.richelbilderbeek.nl/CppSeperateString.htm
const std::vector<std::string> SeperateString(
const std::string& input,
const std::string& seperator)
{
std::vector<std::string> v;
typedef std::string::const_iterator Iterator;
const Iterator end = input.end();
Iterator i1 = input.begin();
{
//Copy until first comma
Iterator i2 = std::search(i1,end,seperator.begin(), seperator.end());
assert(i1!=i2);
std::string s;
std::copy(i1,i2,std::back_inserter(s));
v.push_back(s);
i1 = i2;
}
while (i1!=end)
{
//Copy from comma to (comma || end)
Iterator i2 = std::search(i1 + 1,end,seperator.begin(), seperator.end());
assert(i1!=i2);
assert(i2 == end || std::equal(seperator.begin(),seperator.end(),i2));
std::string s;
std::copy(i1+1,i2,std::back_inserter(s));
v.push_back(s);
i1 = i2;
}
return v;
}
|
SeperateString #6: Seperator is a std::string, does not use algorithms
Go back to Richel Bilderbeek's C++ page.
Go back to Richel Bilderbeek's homepage.
