#include <string>
#include <iostream>
#include <boost/tokenizer.hpp>
void split_and_show(const std::string& s)
{
typedef boost::tokenizer<boost::char_separator<char> > tok_t;
boost::char_separator<char> sep(".|:", "",boost::keep_empty_tokens);
tok_t tok(s, sep);
for(tok_t::iterator i = tok.begin(); i!=tok.end(); ++i)
std::cout << '"' << *i << "\"\n";
}
int main()
{
split_and_show("This -is a str|in#g string: is * kip. ");
split_and_show("This is -a_ string.");
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3QvdG9rZW5pemVyLmhwcD4KCnZvaWQgc3BsaXRfYW5kX3Nob3coY29uc3Qgc3RkOjpzdHJpbmcmIHMpCnsKICAgIHR5cGVkZWYgYm9vc3Q6OnRva2VuaXplcjxib29zdDo6Y2hhcl9zZXBhcmF0b3I8Y2hhcj4gPiB0b2tfdDsKICAgIGJvb3N0OjpjaGFyX3NlcGFyYXRvcjxjaGFyPiBzZXAoIi58OiIsICIiLGJvb3N0OjprZWVwX2VtcHR5X3Rva2Vucyk7CiAgICB0b2tfdCB0b2socywgc2VwKTsKICAgIGZvcih0b2tfdDo6aXRlcmF0b3IgaSA9IHRvay5iZWdpbigpOyBpIT10b2suZW5kKCk7ICsraSkKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICciJyA8PCAqaSA8PCAiXCJcbiI7Cn0KaW50IG1haW4oKQp7CiAgICBzcGxpdF9hbmRfc2hvdygiVGhpcyAtaXMgYSBzdHJ8aW4jZyBzdHJpbmc6IGlzICoga2lwLiAiKTsKICAgIHNwbGl0X2FuZF9zaG93KCJUaGlzICBpcyAtYV8gc3RyaW5nLiIpOwp9