#include <cstdlib>
#include <iostream>
#include <locale>
#include <stdexcept>
int main() {
std::string line;
std::string input;
std::size_t bytes = 0;
std::size_t characters = 0;
try {
std::locale::global(std::locale(""));
}
catch (std::runtime_error const& e) {
std::cout << e.what() << "\n";
return 1;
}
std::cout << "Using locale: " << std::locale().name() << "\n";
while (getline(std::cin, line)) {
input += line + "\n";
bytes += line.length();
for (
std::size_t i = 0;
i < line.length();
i+= std::mblen(line.c_str() + i, line.length() - i)
)
++characters;
}
std::cout << input;
std::cout << bytes << " bytes " << characters << " characters\n";
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KCmludCBtYWluKCkgewogICAgc3RkOjpzdHJpbmcgbGluZTsKICAgIHN0ZDo6c3RyaW5nIGlucHV0OwogICAgc3RkOjpzaXplX3QgYnl0ZXMgPSAwOwogICAgc3RkOjpzaXplX3QgY2hhcmFjdGVycyA9IDA7CgogICAgdHJ5IHsKICAgICAgICBzdGQ6OmxvY2FsZTo6Z2xvYmFsKHN0ZDo6bG9jYWxlKCIiKSk7CiAgICB9CiAgICBjYXRjaCAoc3RkOjpydW50aW1lX2Vycm9yIGNvbnN0JiBlKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGUud2hhdCgpIDw8ICJcbiI7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgc3RkOjpjb3V0IDw8ICJVc2luZyBsb2NhbGU6ICIgPDwgc3RkOjpsb2NhbGUoKS5uYW1lKCkgPDwgIlxuIjsKCiAgICB3aGlsZSAoZ2V0bGluZShzdGQ6OmNpbiwgbGluZSkpIHsKICAgICAgICBpbnB1dCArPSBsaW5lICsgIlxuIjsKICAgICAgICBieXRlcyArPSBsaW5lLmxlbmd0aCgpOwogICAgICAgIGZvciAoCiAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKICAgICAgICAgICAgICAgIGkgPCBsaW5lLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgaSs9IHN0ZDo6bWJsZW4obGluZS5jX3N0cigpICsgaSwgbGluZS5sZW5ndGgoKSAtIGkpCiAgICAgICAgKQogICAgICAgICAgICArK2NoYXJhY3RlcnM7CiAgICB9CgogICAgc3RkOjpjb3V0IDw8IGlucHV0OwogICAgc3RkOjpjb3V0IDw8IGJ5dGVzIDw8ICIgYnl0ZXMgIiA8PCBjaGFyYWN0ZXJzIDw8ICIgY2hhcmFjdGVyc1xuIjsKfQ==