fork download
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4.  
  5. std::vector<std::string> StringToVector (const std::string s,
  6. const char token)
  7. {
  8. std::vector<std::string> v;
  9.  
  10. size_t posLast = 0, pos = 0;
  11. while((pos = s.find(token, pos)) != std::string::npos)
  12. {
  13. if(s[pos] != s[posLast])
  14. v.push_back(s.substr(posLast, pos - posLast));
  15. posLast = ++pos;
  16. }
  17. if(s[posLast] != 0) // If there is no terminating token found
  18. v.push_back(s.substr(posLast));
  19.  
  20. return v;
  21. }
  22.  
  23. int main (int argc, char** argv)
  24. {
  25. std::cout << "\n\"\":\n";
  26. for(auto& i : StringToVector("", ','))
  27. std::cout << i << std::endl;
  28.  
  29. std::cout << "\n\"a,b,c,d,\":\n";
  30. for(auto& i : StringToVector("a,b,c,d,", ','))
  31. std::cout << i << std::endl;
  32.  
  33. std::cout << "\n\"a,,,\":\n";
  34. for(auto& i : StringToVector("a,,,", ','))
  35. std::cout << i << std::endl;
  36.  
  37. std::cout << "\n\",,a,\":\n";
  38. for(auto& i : StringToVector(",,a,", ','))
  39. std::cout << i << std::endl;
  40.  
  41. std::cout << "\n\",,,,\":\n";
  42. for(auto& i : StringToVector(",,,,", ','))
  43. std::cout << i << std::endl;
  44.  
  45. std::cout << "\n\"a\":\n";
  46. for(auto& i : StringToVector("a", ','))
  47. std::cout << i << std::endl;
  48.  
  49. std::cout << "\n\",,a\":\n";
  50. for(auto& i : StringToVector(",,a", ','))
  51. std::cout << i << std::endl;
  52.  
  53. std::cout << "\n\"a,b,c,d\":\n";
  54. for(auto& i : StringToVector("a,b,c,d", ','))
  55. std::cout << i << std::endl;
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
"":

"a,b,c,d,":
a
b
c
d

"a,,,":
a

",,a,":
a

",,,,":

"a":
a

",,a":
a

"a,b,c,d":
a
b
c
d