#include <iostream>
#include <iomanip>
#include <string>
int main()
{
std::string a = "\\u00c1\\u00c4\\u00d3 dsfgdfg";
std::wstring ws;
ws.reserve(a.size());
size_t start = 0;
do
{
size_t found = a.find("\\u", start);
if (found == std::string::npos) break;
if (start < found)
ws.insert(ws.end(), a.begin()+start, a.begin()+found);
wchar_t wc = static_cast<wchar_t>(std::stoi(a.substr(found+2, 4), nullptr, 16));
ws.push_back(wc);
start = found + 6;
}
while (true);
if (start < a.size())
ws.insert(ws.end(), a.begin()+start, a.end());
std::wcout << ws.size() << L" " << ws << std::endl;
for(size_t i = 0; i < ws.size(); ++i) {
std::wcout << L"ws[" << i << L"] = " << std::hex << std::setw(4) << std::setfill(L'0') << static_cast<int>(ws[i]) << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KCmludCBtYWluKCkKewoJc3RkOjpzdHJpbmcgYSA9ICJcXHUwMGMxXFx1MDBjNFxcdTAwZDMgZHNmZ2RmZyI7CgoJc3RkOjp3c3RyaW5nIHdzOwoJd3MucmVzZXJ2ZShhLnNpemUoKSk7CgoJc2l6ZV90IHN0YXJ0ID0gMDsKCWRvCgl7CgkJc2l6ZV90IGZvdW5kID0gYS5maW5kKCJcXHUiLCBzdGFydCk7CgkJaWYgKGZvdW5kID09IHN0ZDo6c3RyaW5nOjpucG9zKSBicmVhazsKCgkJaWYgKHN0YXJ0IDwgZm91bmQpCgkJCXdzLmluc2VydCh3cy5lbmQoKSwgYS5iZWdpbigpK3N0YXJ0LCBhLmJlZ2luKCkrZm91bmQpOwoKCQl3Y2hhcl90IHdjID0gc3RhdGljX2Nhc3Q8d2NoYXJfdD4oc3RkOjpzdG9pKGEuc3Vic3RyKGZvdW5kKzIsIDQpLCBudWxscHRyLCAxNikpOwoJCXdzLnB1c2hfYmFjayh3Yyk7CgoJCXN0YXJ0ID0gZm91bmQgKyA2OwoJfQoJd2hpbGUgKHRydWUpOwoKCWlmIChzdGFydCA8IGEuc2l6ZSgpKQoJCXdzLmluc2VydCh3cy5lbmQoKSwgYS5iZWdpbigpK3N0YXJ0LCBhLmVuZCgpKTsKCglzdGQ6Ondjb3V0IDw8IHdzLnNpemUoKSA8PCBMIiAiIDw8IHdzIDw8IHN0ZDo6ZW5kbDsKCWZvcihzaXplX3QgaSA9IDA7IGkgPCB3cy5zaXplKCk7ICsraSkgewoJICAgIHN0ZDo6d2NvdXQgPDwgTCJ3c1siIDw8IGkgPDwgTCJdID0gIiA8PCBzdGQ6OmhleCA8PCBzdGQ6OnNldHcoNCkgPDwgc3RkOjpzZXRmaWxsKEwnMCcpIDw8IHN0YXRpY19jYXN0PGludD4od3NbaV0pIDw8IHN0ZDo6ZW5kbDsKCX0KCQoJcmV0dXJuIDA7Cn0=