#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
auto fn_Tokenize = [](const std::string& vrx_String, const char vc_Delimeter) -> std::vector<std::string>
{
std::vector<std::string> x_Result;
size_t x_StartOfCurrentSubstring = 0;
size_t x_LastFoundDelimeterPos = 0;
// First find not delimeter character after last found delimeter position
while ((x_StartOfCurrentSubstring = vrx_String.find_first_not_of(vc_Delimeter, x_LastFoundDelimeterPos)) != std::string::npos)
{
x_LastFoundDelimeterPos = vrx_String.find(vc_Delimeter, x_StartOfCurrentSubstring);
if (x_LastFoundDelimeterPos != std::string::npos)
{
x_Result.push_back(vrx_String.substr(x_StartOfCurrentSubstring, x_LastFoundDelimeterPos - x_StartOfCurrentSubstring));
}
else
{
x_Result.push_back(vrx_String.substr(x_StartOfCurrentSubstring));
}
}
return x_Result;
};
std::vector<std::string> result = fn_Tokenize("A;B,.dgsklgasg;C;DEF", ';');
for (std::string a : result)
{
std::cout << a << std::endl;
}
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBhdXRvIGZuX1Rva2VuaXplID0gW10oY29uc3Qgc3RkOjpzdHJpbmcmIHZyeF9TdHJpbmcsIGNvbnN0IGNoYXIgdmNfRGVsaW1ldGVyKSAtPiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4KICAgIHsKICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4geF9SZXN1bHQ7CiAgICAgICAgc2l6ZV90IHhfU3RhcnRPZkN1cnJlbnRTdWJzdHJpbmcgPSAwOwogICAgICAgIHNpemVfdCB4X0xhc3RGb3VuZERlbGltZXRlclBvcyAgID0gMDsKCiAgICAgICAgLy8gRmlyc3QgZmluZCBub3QgZGVsaW1ldGVyIGNoYXJhY3RlciBhZnRlciBsYXN0IGZvdW5kIGRlbGltZXRlciBwb3NpdGlvbgogICAgICAgIHdoaWxlICgoeF9TdGFydE9mQ3VycmVudFN1YnN0cmluZyA9IHZyeF9TdHJpbmcuZmluZF9maXJzdF9ub3Rfb2YodmNfRGVsaW1ldGVyLCB4X0xhc3RGb3VuZERlbGltZXRlclBvcykpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQogICAgICAgIHsKICAgICAgICAgICAgeF9MYXN0Rm91bmREZWxpbWV0ZXJQb3MgPSB2cnhfU3RyaW5nLmZpbmQodmNfRGVsaW1ldGVyLCB4X1N0YXJ0T2ZDdXJyZW50U3Vic3RyaW5nKTsKICAgICAgICAgICAgaWYgKHhfTGFzdEZvdW5kRGVsaW1ldGVyUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4X1Jlc3VsdC5wdXNoX2JhY2sodnJ4X1N0cmluZy5zdWJzdHIoeF9TdGFydE9mQ3VycmVudFN1YnN0cmluZywgeF9MYXN0Rm91bmREZWxpbWV0ZXJQb3MgLSB4X1N0YXJ0T2ZDdXJyZW50U3Vic3RyaW5nKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4X1Jlc3VsdC5wdXNoX2JhY2sodnJ4X1N0cmluZy5zdWJzdHIoeF9TdGFydE9mQ3VycmVudFN1YnN0cmluZykpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiB4X1Jlc3VsdDsKICAgIH07CiAgICAKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQgPSBmbl9Ub2tlbml6ZSgiQTtCLC5kZ3NrbGdhc2c7QztERUYiLCAnOycpOwogICAgCiAgICBmb3IgKHN0ZDo6c3RyaW5nIGEgOiByZXN1bHQpCiAgICB7CiAgICAJc3RkOjpjb3V0IDw8IGEgPDwgc3RkOjplbmRsOwogICAgfQogICAgCgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==