Skip to content

Instantly share code, notes, and snippets.

@Isa-rentacs
Created February 19, 2019 12:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Isa-rentacs/d975e723478121d9eeab58cd4957b426 to your computer and use it in GitHub Desktop.
Save Isa-rentacs/d975e723478121d9eeab58cd4957b426 to your computer and use it in GitHub Desktop.
C++ string encoding 1
#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