9 Nisan 2018 Pazartesi

String Literal ve Escape Sequence

Escape Sequence Karakterleri
String Literal kullanırken escape sequence karakterlerini bilmek gerekir. Karakterler ve nasıl escape edildikleri şöyle.
new-line         NL(LF) \n
horizontal tab   HT     \t
vertical tab     VT     \v
backspace        BS     \b
carriage return  CR     \r
form feed        FF     \f
alert            BEL    \a
backslash        \      \\
question mark    ?      \?
single quote           \’
double quote     "      \"
octal number     ooo    \ooo
hex number       hhh    \xhhh

Hexadecimal
Literal içinde hexadecimal sayı kullanmak isteyebiliriz. n tane hexadecimal escape sequence arka arkaya gelebilir.
hexadecimal-escape-sequence:
    \x hexadecimal-digit
    hexadecimal-escape-sequence hexadecimal-digit

Örnek
Şöyle yaparız.
char str[] = "abcde"; // 'a', 'b', 'c', 'd', 'e', 0x00
char str2[] = "abc\x12\x34"; // 'a', 'b', 'c', 0x12, 0x34, 0x00
Eğer \x12'den sonra normal bir karakter daha eklemek istersek şöyle yaparız.
char problem[] = "abc\x12" "e";
Daha okunaklı olsun istersek şöyle yaparız.
char problem[] = "abc" "\x12" "e";
Octal
Octal escape sequence içinde 3 tane rakam olabilir
octal-escape-sequence:
    \ octal-digit
    \ octal-digit octal-digit
    \ octal-digit octal-digit octal-digit
Şöyle yaparız.
char problem[] = "abc\022e";
İstisnalar
String içinde bir tek single quote biraz farklılaşabilir. Açıklaması şöyle
Escape sequences and universal-character-names in non-raw string literals have the same meaning as in character literals (2.14.3), except that the single quote ’ is representable either by itself or by the escape sequence \’
Yani şu iki kod parçası aynı şeydir.
int main()
{
    char* str1 = "Tom's cat";
    char* str2 = "Tom\'s cat";
}
Ancak literal karakter ise escape sequence kullanmak gerekir.
char x = '\'';

Hiç yorum yok:

Yorum Gönder