1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include "utf8/utf8.h"
#include<vector>
#include<cstdio> // Linux
using namespace std;
int main(int argc, char* argv[])
{
// привет всем
utf8::uint8_t utf_8[] = {0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82, 0x20, 0xD0, 0xB2, 0xD1, 0x81, 0xD0, 0xB5, 0xD0, 0xBC, '\0'};
utf8::uint16_t utf_16[] = {0x43F, 0x440, 0x438, 0x432, 0x435, 0x442, 0x20, 0x432, 0x441, 0x435, 0x43C, '\0'};
unsigned char size_utf_8 = 0, size_utf_16 = 0;
{
utf8::uint8_t* it1 = utf_8; while(*it1 != '\0') { ++it1; ++size_utf_8; }
utf8::uint16_t* it2 = utf_16; while(*it2 != '\0') { ++it2; ++size_utf_16; }
}
vector<utf8::uint8_t> utf8result;
vector<utf8::uint16_t> utf16result;
utf8::utf16to8(utf_16, (utf_16 + size_utf_16), back_inserter(utf8result));
utf8::utf8to16(utf_8, (utf_8 + size_utf_8), back_inserter(utf16result));
utf8result.push_back('\0');
utf16result.push_back('\0');
printf("UTF-8 : %s\nConvert UTF16 -> UTF-8 : %s\nConvert UTF8 -> UTF-16: ", utf_8, utf8result.data());
for(unsigned char c = 0; c < 11; ++c) {
printf("%x ", utf16result[c]);
}
printf("\n");
return 0;
} |
Partager