1 Temmuz 2019 Pazartesi

u8 Literal - String İçin UTF-8 Literal

Giriş
u8 literal utf-8 içindir.

Döndürdüğü Tip
char* veya char8_t* döndürür.

Örnek
Şu kod string literal'ı std:string'e atamaya çalıştığı için derlenmez
std::string myString = u8"●";
Şöyle yaparız.
const std::u8string str = u8"●";
Örnek
u8 bir macro olarak tanımlı olabilir. Şöyle yaparız.
#define u8 "abc"
const char *s = u8"def";  // Previously "abcdef", now "def"
Örnek
utf8 string literal'ları Linux'ta ekrana basmakta sorun yok ancak Windows'ta sorun çıkıyor
std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
std::cout << test;
Şöyle yaparız.
const char *c = u8"£";
Şöyle yaparız.
std::cout << u8"I'm wrong.";
Örnek - \u
Açıklaması şöyle.
\u is not for UTF-16 or any other encoding. Escape sequences like \u and \U are encoding-agnostic. They only specify the code point.
Yani \u ile codepoint belirtilir. Şöyle yaparız.
const char *c = u8"\u00A3"; // "£"
Şöyle yaparız.
cout << u8"\u0061\u0928\u093F\u4E9C\U00010083" << endl;
Örnek -  \x
Bu kullanımda direkt byte'ları veriyoruz. Şöyle yaparız. Bu durumda u8 kullanmanın ne anlamı var bilmiyorum.
const char* utf8string = u8"\xF0\x9F\x98\x81";
Diğer
Eğer u8 yoksa, utf8 byte'ları \x yani hexadecimal olarak teker teker yazarız.

Örnek
Şöyle yaparız.
std::string str="\xc2\xb1";
std::cout << str;
Çıktı olarak şunu alırız.
±

Hiç yorum yok:

Yorum Gönder