#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
void output(const u16string &s)
{
cout << "length: " << s.length() << endl;
cout << "code units: ";
for (auto ch : s)
cout << hex << setw(4) << setfill('0') << (int)ch << ' ';
cout << endl;
cout << "bytes: ";
const unsigned char *ptr = reinterpret_cast<const unsigned char*>(s.data());
for (size_t i = 0; i < s.length() * sizeof(char16_t); ++i)
cout << hex << setw(2) << setfill('0') << (int)ptr[i] << ' ';
cout << endl;
}
int main() {
output(u16string{u"万不得已"});
cout << endl;
output(u16string{u"\007\116\015\116\227\137\362\135"});
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgb3V0cHV0KGNvbnN0IHUxNnN0cmluZyAmcykKewogICAgY291dCA8PCAibGVuZ3RoOiAiIDw8IHMubGVuZ3RoKCkgPDwgZW5kbDsJCgogICAgY291dCA8PCAiY29kZSB1bml0czogIjsKICAgIGZvciAoYXV0byBjaCA6IHMpCiAgICAgICAgY291dCA8PCBoZXggPDwgc2V0dyg0KSA8PCBzZXRmaWxsKCcwJykgPDwgKGludCljaCA8PCAnICc7CiAgICBjb3V0IDw8IGVuZGw7CQoKICAgIGNvdXQgPDwgImJ5dGVzOiAiOwogICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHRyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocy5kYXRhKCkpOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzLmxlbmd0aCgpICogc2l6ZW9mKGNoYXIxNl90KTsgKytpKQogICAgICAgIGNvdXQgPDwgaGV4IDw8IHNldHcoMikgPDwgc2V0ZmlsbCgnMCcpIDw8IChpbnQpcHRyW2ldIDw8ICcgJzsKICAgIGNvdXQgPDwgZW5kbDsJCn0KCmludCBtYWluKCkgewogICAgb3V0cHV0KHUxNnN0cmluZ3t1IuS4h+S4jeW+l+W3siJ9KTsKICAgIGNvdXQgPDwgZW5kbDsKICAgIG91dHB1dCh1MTZzdHJpbmd7dSJcMDA3XDExNlwwMTVcMTE2XDIyN1wxMzdcMzYyXDEzNSJ9KTsKICAgIHJldHVybiAwOwp9