#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>
int main() {
std::wstring str = L"2 , 14 33 50 \"AAA BBB\"";
std::wstring escSep(L"\\");//escape character
std::wstring delim(L" \t\r\n,");//split on spaces, tabs, new lines, commas
std::wstring quotes(L"\"");//allow double-quoted values with delimiters within
boost::escaped_list_separator<wchar_t> separator(escSep, delim, quotes);
boost::tokenizer<boost::escaped_list_separator<wchar_t>, std::wstring::const_iterator, std::wstring> tok(str, separator);
for(auto beg=tok.begin(); beg!=tok.end();++beg)
std::wcout << *beg << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L3Rva2VuaXplci5ocHA+CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6d3N0cmluZyBzdHIgPSBMIjIJICwgMTQJMzMJNTAJIFwiQUFBIEJCQlwiIjsKICAgIAogICAgc3RkOjp3c3RyaW5nIGVzY1NlcChMIlxcIik7Ly9lc2NhcGUgY2hhcmFjdGVyCiAgICBzdGQ6OndzdHJpbmcgZGVsaW0oTCIgXHRcclxuLCIpOy8vc3BsaXQgb24gc3BhY2VzLCB0YWJzLCBuZXcgbGluZXMsIGNvbW1hcwogICAgc3RkOjp3c3RyaW5nIHF1b3RlcyhMIlwiIik7Ly9hbGxvdyBkb3VibGUtcXVvdGVkIHZhbHVlcyB3aXRoIGRlbGltaXRlcnMgd2l0aGluCgogICAgYm9vc3Q6OmVzY2FwZWRfbGlzdF9zZXBhcmF0b3I8d2NoYXJfdD4gc2VwYXJhdG9yKGVzY1NlcCwgZGVsaW0sIHF1b3Rlcyk7CiAgICBib29zdDo6dG9rZW5pemVyPGJvb3N0Ojplc2NhcGVkX2xpc3Rfc2VwYXJhdG9yPHdjaGFyX3Q+LCBzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yLCBzdGQ6OndzdHJpbmc+IHRvayhzdHIsIHNlcGFyYXRvcik7CgogICAgZm9yKGF1dG8gYmVnPXRvay5iZWdpbigpOyBiZWchPXRvay5lbmQoKTsrK2JlZykKICAgICAgICBzdGQ6Ondjb3V0IDw8ICpiZWcgPDwgc3RkOjplbmRsOwogICAgICAgIAogICAgcmV0dXJuIDA7Cn0=