fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4.  
  5. int main()
  6. {
  7. std::string a = "\\u039D\\u1FD1\\u03BA\\u03CC\\u03BB\\u03B1\\u03BF\\u03C2 asdasd";
  8.  
  9. std::wstring ws;
  10. ws.reserve(a.size());
  11.  
  12. for(size_t i = 0; i < a.size();)
  13. {
  14. char ch = a[i++];
  15.  
  16. if ((ch == '\\') && (i < a.size()) && (a[i] == 'u'))
  17. {
  18. wchar_t wc = static_cast<wchar_t>(std::stoi(a.substr(++i, 4), nullptr, 16));
  19. i += 4;
  20. ws.push_back(wc);
  21. }
  22. else {
  23. ws.push_back(static_cast<wchar_t>(ch));
  24. }
  25. }
  26.  
  27. std::wcout << ws.size() << L" " << ws << std::endl;
  28. for(size_t i = 0; i < ws.size(); ++i) {
  29. std::wcout << L"ws[" << i << L"] = " << std::hex << std::setw(4) << std::setfill(L'0') << static_cast<int>(ws[i]) << std::endl;
  30. }
  31.  
  32. return 0;
  33. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
15 ???????? asdasd
ws[0] = 039d
ws[1] = 1fd1
ws[2] = 03ba
ws[3] = 03cc
ws[4] = 03bb
ws[5] = 03b1
ws[6] = 03bf
ws[7] = 03c2
ws[8] = 0020
ws[9] = 0061
ws[a] = 0073
ws[b] = 0064
ws[c] = 0061
ws[d] = 0073
ws[e] = 0064