Hollowfires

Untitled

Apr 21st, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include "CStrTokenizer.h"
  2.  
  3. CStrTokenizer::CStrTokenizer(string str, string delim, bool includeDelim)
  4. {
  5. string t_str = "";
  6.  
  7. if ( includeDelim )
  8. {
  9. for(int i=0;i<str.length();i++)
  10. {
  11. bool delimiterFound=false;
  12. for(int j=0;j<delim.length();j++)
  13. {
  14. if ( delim[j]==str[i] )
  15. {
  16. t_str += ( " " + delim.substr(j,1) + " " );
  17. delimiterFound=true;
  18. }
  19. }
  20. if ( !delimiterFound ) {
  21. t_str += str.substr(i,1);
  22. }
  23. delimiterFound = false;
  24. }
  25. CStrTokenizer::StringTokenize(t_str, tokens, " ");
  26. it = 0;
  27. }
  28. else
  29. {
  30. CStrTokenizer::StringTokenize(str, tokens, delim);
  31. it = 0;
  32. }
  33. }
  34.  
  35. void CStrTokenizer::StringTokenize(const string& str, vector<string>& tokens, const string& delimiters)
  36. {
  37. // Skip delimiters at beginning.
  38. string::size_type lastPos = str.find_first_not_of(delimiters, 0);
  39. // Find first "non-delimiter".
  40. string::size_type pos = str.find_first_of(delimiters, lastPos);
  41.  
  42. while (string::npos != pos || string::npos != lastPos)
  43. {
  44. // Found a token, add it to the vector.
  45. tokens.push_back(str.substr(lastPos, pos - lastPos));
  46. // Skip delimiters. Note the "not_of"
  47. lastPos = str.find_first_not_of(delimiters, pos);
  48. // Find next "non-delimiter"
  49. pos = str.find_first_of(delimiters, lastPos);
  50. }
  51.  
  52. atEnd = false;
  53. }
  54.  
  55. vector<string> CStrTokenizer::getTokens()
  56. {
  57. return tokens;
  58. }
  59.  
  60. string CStrTokenizer::getNextToken()
  61. {
  62. string tok = tokens[it++];
  63. atEnd = it == tokens.size(); // true if we are past the end of the vector
  64. return tok;
  65. }
  66.  
  67. bool CStrTokenizer::hasMoreTokens()
  68. {
  69. return !atEnd;
  70. }
  71.  
  72. void CStrTokenizer::reset()
  73. {
  74. it=0;
  75. atEnd=false;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment