Strtok () analog in C ++

I just can't find an algorithm for dividing a string into words by multiple delimiters. I know how to split a string into a space using istringtream and a single delimiter using getline . How can I connect them all.

For instance:

input : This -is-a!,string;
conclusion :

 This is a string 
+3
source share
3 answers
 #include <iostream> #include <string> #include <vector> using namespace std; void SplitToVector(vector<string> &v, string dlm, string src){ string::size_type p, start=0, len=src.length(); v.clear(); start = src.find_first_not_of(dlm); p = src.find_first_of(dlm, start); while(p != string::npos){ v.push_back(src.substr(start, p-start)); start = src.find_first_not_of(dlm, p); p = src.find_first_of(dlm, start); } if(len>start)//rest v.push_back(src.substr(start, len - start)); } int main(void){ char input[256] = "This -is-a!,string;"; vector<string> v; int i, size; SplitToVector(v, "-!,;", input); //cout << input << endl; size = v.size(); for(i=0; i<size; i++) cout << v.at(i) << endl; return 0; } 
+1
source

Why not just #include <cstring> and use std::strtok() in your C ++ program?

+2
source

I would recommend split in boost (string algorithm), see http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/usage.html#idp163440592 .

0
source

Source: https://habr.com/ru/post/904948/


All Articles