Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- std::wstring _toUtf8(const std::string &str) {
- auto getSymbolLen = [](const char *str, size_t n) {
- if( 0xf0 == (0xf8&str[n]))
- return 4;
- else if( 0xe0 == (0xf0&str[n]))
- return 3;
- else if( 0xc0 == (0xe0&str[n]))
- return 2;
- return 1;
- };
- const char *c_str = str.c_str();
- wchar_t wChar;
- char wcharSymbol[sizeof(wchar_t)] = {0};
- std::vector<wchar_t> characters;
- for (size_t i = 0; i < str.size();) {
- size_t symbLen = getSymbolLen(str.c_str(), i);
- memset(wcharSymbol, 0, sizeof(wchar_t));
- for (size_t j = 0; j < symbLen; ++j)
- wcharSymbol[j] = c_str[i+j];
- for (size_t j = 0; j < sizeof(wchar_t); ++j) {
- *(((unsigned char*)(&wChar))+j)
- = wcharSymbol[j];
- }
- i += symbLen;
- characters.push_back(wChar);
- }
- return std::wstring(characters.begin(), characters.end());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement