Created
February 19, 2019 12:12
-
-
Save Isa-rentacs/d975e723478121d9eeab58cd4957b426 to your computer and use it in GitHub Desktop.
C++ string encoding 1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <cstring> | |
using namespace std; | |
void print_bytes(unsigned char* ptr, unsigned char* end) | |
{ | |
while(ptr != end) | |
{ | |
printf("%x, %02x\n", ptr, *ptr); | |
++ptr; | |
} | |
} | |
int main(){ | |
string literal_to_str = "\U00029E3D"s; | |
wstring wide_literal_to_wstr= L"\U00029E3D"s; | |
string u8literal_to_str = u8"\U00029E3D"s; | |
u16string u16literal_to_u16string = u"\U00029E3D"s; | |
u32string u32literal_to_u32string = U"\U00029E3D"s; | |
cout << "=== literal_to_str ===" << endl; | |
cout << "Size: " << literal_to_str.size() << endl; | |
print_bytes((unsigned char*)literal_to_str.data(), (unsigned char*)(literal_to_str.data() + literal_to_str.size())); | |
cout << "=== wide_literal_to_wstr ===" << endl; | |
cout << "Size: " << wide_literal_to_wstr.size() << endl; | |
print_bytes((unsigned char*)wide_literal_to_wstr.data(),(unsigned char*)&*(wide_literal_to_wstr.begin() + wide_literal_to_wstr.size())); | |
cout << "=== u16literal_to_u16string ===" << endl; | |
cout << "Size: " << u16literal_to_u16string.size() << endl; | |
print_bytes((unsigned char*)u16literal_to_u16string.data(), (unsigned char*)(u16literal_to_u16string.data() + u16literal_to_u16string.size())); | |
cout << "=== u32literal_to_u32string ===" << endl; | |
cout << "Size: " << u32literal_to_u32string.size() << endl; | |
print_bytes((unsigned char*)u32literal_to_u32string.data(), (unsigned char*)(u32literal_to_u32string.data() + u32literal_to_u32string.size())); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment