Tokenize a string with escaping: Difference between revisions

C++: invalid argument exception
m (added related tasks.)
(C++: invalid argument exception)
Line 446:
=={{header|C++}}==
<lang cpp>#include <iostream>
#include <stdexcept>
#include <string>
#include <vector>
Line 452 ⟶ 453:
 
vector<string> tokenize(string input, char seperator, char escape) {
vector<string> output;
string token;
string token = "";
 
bool inEsc = false;
for (char ch : input) {
if (inEsc) {
inEsc = false;
} else if (ch == escape) {
}
inEsc = true;
else if (ch == escape) {
continue;
inEsc = true;
} else if (ch == seperator) {
continue;
output.push_back(token);
}
string token = "";
else if (ch == seperator) {
continue;
output.push_back(token);
}
token += ""ch;
continue;
}
}
if (inEsc) {
token += ch;
throw new exceptioninvalid_argument("Invalid terminal escape");
}
if (inEsc) {
throw new exception("Invalid terminal escape");
}
 
output.push_back(token);
return output;
}
 
int main() {
string sample = "one^|uno||three^^^^|four^^^|^cuatro|";
 
cout << sample << endl;
cout << "'["';
for (auto t : tokenize(sample, '|', '^')) {
cout << '"' << t << "\", ";
}
}
cout << "']"' << endl;
 
return 0;
}</lang>
{{out}}
Anonymous user