#include <locale>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <sstream>
class my_ctype : public
std::ctype<char>
{
mask my_table[table_size];
public:
my_ctype(size_t refs = 0)
: std::ctype<char>(&my_table[0], false, refs)
{
std::copy_n(classic_table(), table_size, my_table);
my_table['-'] = (mask)space;
my_table['\''] = (mask)space;
}
};
// And a little test program to show it works:
int main() {
std::istringstream input("This is some input from McDonald's and Burger-King.");
std::locale x(std::locale::classic(), new my_ctype);
input.imbue(x);
std::copy(std::istream_iterator<std::string>(input),
std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(std::cout, "\n"));
return 0;
}
I2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzc3RyZWFtPgoKY2xhc3MgbXlfY3R5cGUgOiBwdWJsaWMKc3RkOjpjdHlwZTxjaGFyPgp7CiAgICBtYXNrIG15X3RhYmxlW3RhYmxlX3NpemVdOwpwdWJsaWM6CiAgICBteV9jdHlwZShzaXplX3QgcmVmcyA9IDApICAKICAgICAgICA6IHN0ZDo6Y3R5cGU8Y2hhcj4oJm15X3RhYmxlWzBdLCBmYWxzZSwgcmVmcykKICAgIHsKICAgICAgICBzdGQ6OmNvcHlfbihjbGFzc2ljX3RhYmxlKCksIHRhYmxlX3NpemUsIG15X3RhYmxlKTsKICAgICAgICBteV90YWJsZVsnLSddID0gKG1hc2spc3BhY2U7CiAgICAgICAgbXlfdGFibGVbJ1wnJ10gPSAobWFzaylzcGFjZTsKICAgIH0KfTsKCi8vIEFuZCBhIGxpdHRsZSB0ZXN0IHByb2dyYW0gdG8gc2hvdyBpdCB3b3JrczoKCmludCBtYWluKCkgewogICAgc3RkOjppc3RyaW5nc3RyZWFtIGlucHV0KCJUaGlzIGlzIHNvbWUgaW5wdXQgZnJvbSBNY0RvbmFsZCdzIGFuZCBCdXJnZXItS2luZy4iKTsKICAgIHN0ZDo6bG9jYWxlIHgoc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSwgbmV3IG15X2N0eXBlKTsKICAgIGlucHV0LmltYnVlKHgpOwoKICAgIHN0ZDo6Y29weShzdGQ6OmlzdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KGlucHV0KSwKICAgICAgICBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KCksCiAgICAgICAgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPHN0ZDo6c3RyaW5nPihzdGQ6OmNvdXQsICJcbiIpKTsKCiAgICByZXR1cm4gMDsKfQ==