У меня есть строки следующего вида a = x + y
или abc = xyz + 5
или 6 + 5
или f(p)
Мне нужно, чтобы токенизация строки была такой, чтобы я читал каждый operator
и operand
поэтому для a = x + y
возврат токенов должен составлять a,=,x,+,y
, а в случае abc=xyz+5
он должен возвращать abc,=,xyz,+,5
.обратите внимание, что между operator
и operands
может быть или не быть пробелов, это то, что я пробовал
void tokenize(std::vector<std::string>& tokens, const char* input, const char* delimiters) {
const char* s = input;
const char* e = s;
while (*e != 0) {
e = s;
while (*e != 0 && strchr(delimiters, *e) == 0) {
++e;
}
if ( *e != ' ' && strchr(delimiters, *e) != 0 ){
std::string op = "";
op += *e;
tokens.push_back(op);
}
if (e - s > 0) {
tokens.push_back(std::string(s,e - s));
}
s = e + 1;
}
}