#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
typedef wchar_t CharType;
typedef std::basic_string<CharType> StringType;
typedef std::vector<StringType> ContainerType;
typedef std::basic_istringstream<CharType> IStringStreamType;
void SplitString(StringType const &str, CharType delim, ContainerType &collection)
{
IStringStreamType ss(str);
while (ss.good())
{
StringType token;
std::getline(ss, token, delim);
collection.push_back(token);
}
}
int main()
{
const CharType * const theString = L"select * from table1; select * from table2;";
ContainerType col;
SplitString(theString, L';', col);
std::for_each(
col.begin()
, col.end()
, [] (StringType const &s) { std::wcout << s << std::endl; }
);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnR5cGVkZWYgd2NoYXJfdCBDaGFyVHlwZTsKdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVHlwZT4gU3RyaW5nVHlwZTsKdHlwZWRlZiBzdGQ6OnZlY3RvcjxTdHJpbmdUeXBlPiBDb250YWluZXJUeXBlOwp0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmluZ3N0cmVhbTxDaGFyVHlwZT4gSVN0cmluZ1N0cmVhbVR5cGU7Cgp2b2lkIFNwbGl0U3RyaW5nKFN0cmluZ1R5cGUgY29uc3QgJnN0ciwgQ2hhclR5cGUgZGVsaW0sIENvbnRhaW5lclR5cGUgJmNvbGxlY3Rpb24pCnsKICAgIElTdHJpbmdTdHJlYW1UeXBlIHNzKHN0cik7CiAgICB3aGlsZSAoc3MuZ29vZCgpKQogICAgewogICAgICAgIFN0cmluZ1R5cGUgdG9rZW47CiAgICAgICAgc3RkOjpnZXRsaW5lKHNzLCB0b2tlbiwgZGVsaW0pOwogICAgICAgIGNvbGxlY3Rpb24ucHVzaF9iYWNrKHRva2VuKTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBjb25zdCBDaGFyVHlwZSAqIGNvbnN0IHRoZVN0cmluZyA9IEwic2VsZWN0ICogZnJvbSB0YWJsZTE7IHNlbGVjdCAqIGZyb20gdGFibGUyOyI7CiAgICBDb250YWluZXJUeXBlIGNvbDsKICAgIFNwbGl0U3RyaW5nKHRoZVN0cmluZywgTCc7JywgY29sKTsKICAgIHN0ZDo6Zm9yX2VhY2goCiAgICAgICAgY29sLmJlZ2luKCkKICAgICAgICAsIGNvbC5lbmQoKQogICAgICAgICwgW10gKFN0cmluZ1R5cGUgY29uc3QgJnMpIHsgc3RkOjp3Y291dCA8PCBzIDw8IHN0ZDo6ZW5kbDsgfQogICAgKTsKICAgIHJldHVybiAwOwp9Cg==