Cara menggunakan C++ String Literal

Papan ketik komputer memiliki karakter yang tercetak di atasnya. Saat Anda menekan tombol, Anda melihat karakter di layar. Catatan: spasi juga merupakan karakter. Sebuah string literal adalah urutan karakter. Artikel ini menjelaskan cara menggunakan literal string C++. Anda harus tahu tentang array dan pointer C++ untuk memahami artikel ini.

Karakter Literal

Karakter literal adalah karakter dalam tanda kutip tunggal. Jadi,

char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';

semua definisi karakter yang berbeda. Perhatikan bahwa digit dalam tanda kutip tunggal adalah karakter dan bukan bilangan bulat.

Urutan escape seperti ” (lihat di bawah) dalam tanda kutip tunggal, adalah sebuah karakter. Jadi,

char ident1 = '"';

adalah karakter.

Simbol tunggal dalam tanda kutip ganda bukanlah karakter; itu adalah string dari satu karakter. Jadi “A” atau “c” atau “2” bukan karakter tetapi merupakan string masing-masing satu karakter.

Variabel char dapat dipindahkan, nanti di program, sebagai berikut:

char ident = 'x';
ident = 'Y';

Untuk menghentikan karakter yang ditetapkan ke pengidentifikasi agar tidak diubah, nanti dalam program, awali definisi dengan kata yang dicadangkan, const, sebagai berikut:

const char ident = 'd';

Variabel, ident dikatakan read-only.

String Literal

Sebuah literal string adalah urutan karakter dalam tanda kutip ganda. Jadi,

char ident1[] = "I love you"; char ident2[] = "I hate 3 of you"; char ident3[]
= "we are the world"; char ident4[] = "Hello World!";

semua definisi yang berbeda dari string literal. Perhatikan useran tanda kutip ganda. Tidak ada yang seperti variabel biasa untuk sebuah string. Literal string adalah larik karakter, di mana alih-alih dibatasi dengan {}, urutannya dibatasi dengan “”. Karakter tidak dipisahkan dengan koma. Angka apa pun yang lebih besar dari jumlah karakter dalam literal string dapat ditempatkan di dalam tanda kurung siku. Namun, lebih baik membiarkan tanda kurung siku kosong.

Satu karakter dalam tanda kutip ganda bukanlah karakter; itu adalah string dari satu karakter. Jadi “A” atau “c” atau “2” bukanlah sebuah karakter, melainkan string yang masing-masing terdiri dari satu karakter.

Variabel string tidak mengizinkan penugasan ulang literal lengkap, nanti di program – lihat di bawah. Namun, karakter individu dapat ditugaskan kembali – lihat di bawah.

Kutipan Tunggal dan Ganda dalam Karakter atau Literal

Untuk memiliki satu kutipan sebagai karakter, lakukan sesuatu seperti,

char ident = ''';

Untuk memiliki tanda kutip ganda sebagai karakter dalam string literal, lakukan sesuatu seperti,

char ident[] = "ab"cd";

Garis miring terbalik digunakan dalam urutan pelarian, untuk menghindari konflik dengan pembatas. Untuk memiliki tanda kutip ganda sebagai karakter, tidak perlu garis miring terbalik: ‘”’ boleh saja. Untuk memiliki satu kutipan dalam literal string, tidak perlu garis miring terbalik: “ab’cd” tidak apa-apa.

Karena garis miring terbalik digunakan untuk keluar dari karakter, garis miring terbalik harus dihilangkan dengan garis miring terbalik lainnya saat digunakan sebagai karakter atau dalam literal string.

Urutan pelarian

Urutan pelarian adalah salah satu dari:

' " ?  a b f n r >t v

Setiap urutan escape biasanya diketik sebagai karakter dalam tanda kutip tunggal atau sebagai urutan escape dalam tanda kutip ganda.

  • ‘ : digunakan sebagai karakter tanda kutip tunggal, dalam tanda kutip tunggal.
  • ” : digunakan sebagai karakter tanda kutip ganda, dalam literal.
  • ? : sejak ? adalah karakter yang dicadangkan, itu harus diloloskan secara literal.
  • : garis miring terbalik harus diloloskan sebagai karakter atau literal string, agar tidak menghasilkan makna lain.
  • a : membunyikan bel alarm sekali, saat digunakan sebagai karakter atau dalam litera
    l string.
  • b : hasil sebagai backspace di tampilan dalam string literal, menghilangkan karakter sebelumnya.
  • f : menyebabkan halaman berikutnya diumpankan ke printer saat digunakan sebagai karakter atau dalam literal.
  • r : mengembalikan kursor, di mana karakter berikutnya akan dicetak, tetapi dalam baris saat ini.
  • n : mengembalikan kursor ke awal baris berikutnya atau hanya ke baris berikutnya, tergantung pada sistem operasi.
  • t : membuat tab horizontal.
  • v : membuat tab vertikal.

Operasi dengan Karakter

Rangkaian

Pada definisi, dua literal string dapat digabungkan dengan spasi sebagai berikut:

char ident[] = "abc" "def";
cout << ident << "n";

Outputnya adalah: abcdef. Definisi ini dapat diperluas ke lebih dari dua literal. Catatan: pernyataan adalah definisi, bukan hanya tugas. Definisi tersebut bahkan dapat berlanjut ke baris berikutnya dengan spasi yang memisahkan baris-baris tersebut sebagai berikut:

char ident[] = "abc" "def"
"ghi";
cout << ident << "n";

Outputnya adalah, abcdefghi.

Catatan: Karakter tidak dapat digabungkan dengan cara ini, karena tanda kutip tunggal untuk karakter tidak boleh memiliki lebih dari satu simbol.

Operator Kesetaraan

Karakter yang sama pada kasus yang sama adalah sama. Mereka tidak sama jika mereka tidak dari kasus yang sama. Mempertimbangkan,

bool result = 'B' == 'B';
cout << result << "n";

== berarti sama, sementara = berarti ditugaskan-ke dan tidak sama. Outputnya adalah 1 untuk benar. Mempertimbangkan,

bool result = 'B' == 'b';
cout << result << "n";

Outputnya adalah 0 untuk false. Mempertimbangkan,

bool result = 'b' == 'c';
cout << result << "n";

Outputnya adalah 0 untuk false. Mempertimbangkan,

bool result = 'B' != 'B';
cout << result << "n";

!= berarti tidak sama, sedangkan = berarti ditugaskan ke dan tidak sama. Outputnya adalah 0 untuk false. Mempertimbangkan,

bool result = 'B' != 'b';
cout << result << "n";

Outputnya adalah 1 untuk benar. Mempertimbangkan,

bool result = 'b' != 'c';
cout << result << "n";

Outputnya adalah 1 untuk benar.

Jadi, == dan != adalah operator persamaan.

Operator Relasional

Untuk karakter biasa di C++, dalam urutan menaik, angka datang sebelum huruf besar, yang datang sebelum huruf kecil.

Jadi < akan mengembalikan true (1) ketika karakter kiri lebih kecil dari karakter kanan. Operator relasional lainnya, <=, >, >= dijelaskan dengan cara yang sama.

String Literal sebagai Objek

Array adalah penunjuk konstan ke awal urutan tipe data tertentu. Demikian pula, string adalah penunjuk konstan ke awal urutan karakter. Bandingkan definisi berikut:

int arr[] = {3, 4, 5, 6, 7};
char str[] = {'w', 'o', 'm', 'a', 'n'};
char stri[] = "woman";

Array pertama adalah array int dan memiliki lima elemen. Array kedua dan ketiga adalah array karakter dengan nama yang berbeda, tetapi jumlah elemen yang sama. Array kedua dan ketiga adalah sama, tetapi untuk namanya. Isi teks dari larik kedua dibatasi oleh kurung kurawal; karakter dipisahkan dengan koma dan setiap karakter dalam tanda kutip tunggal. Isi teks dari larik ketiga dibatasi oleh tanda kutip ganda; karakter tidak dipisahkan dengan koma dan setiap karakter tidak dalam tanda kutip tunggal. Array kedua dan ketiga adalah dua cara untuk menghasilkan string, dengan cara ketiga menjadi cara yang lebih baik.

arr adalah penunjuk konstan ke elemen pertama dari lariknya, artinya arr akan selalu menunjuk ke lokasi yang memiliki bilangan bulat, 3 bahkan jika nilai 3 diubah. Ukuran array, lima elemen, tidak benar-benar tetap konstan. Namun, masing-masing nilai array dapat diubah.

str adalah pointer konstan ke elemen pertama dari array, artinya str akan selalu menunjuk ke lokasi yang memiliki karakter, ‘w’ bahkan jika nilai ‘w’ diubah. Ukuran array karakter, lima elemen, tidak benar-benar konstan. Namun, masing-masing nilai literal dapat diubah.

stri adalah penunjuk konstan ke elemen pertama literalnya (array), artinya stri akan selalu menunjuk ke lokasi yang memiliki karakter, w bahkan jika nilai w diubah. Ukuran string literal (array), lima elemen, tidak benar-benar tetap konstan. Namun, masing-masing nilai literal dapat dimodifikasi.

Apa yang konstan dalam array atau string literal? Alamat memori elemen pertama larik atau literal tetap sebagai nilai nama (pengidentifikasi) larik atau literal, dan tidak dapat diubah. Nah, ukuran array atau literal tidak benar-benar konstan. Setiap nilai dalam array atau literal dapat diubah. Kode berikut menunjukkan bagaimana elemen keempat dari setiap array telah diubah:

int arr[] = {3, 4, 5, 6, 7};
char str[] = {'w', 'o', 'm', 'a', 'n'};
char stri[] = "woman";

arr[3] = 9;
str[3] = 'e';
stri[3] = 'e';

cout << arr[3] << 'n';
cout << str << 'n';
cout << stri << 'n';

Outputnya adalah:

9
womenwomen
women

Perhatikan bahwa elemen literal string yang ditentukan, seperti definisi ketiga di atas, dapat diakses dengan indeks array (subskrip). Alasan untuk baris kedua dari output diberikan di bawah ini.

Definisi Subskrip

Perhatikan bahwa dalam definisi di atas, tidak ada bilangan bulat untuk subskrip. Ketika jumlah elemen tidak dapat ditentukan dengan mudah, oleh programmer, bilangan bulat untuk subscript harus dihilangkan. Apapun masalahnya, bilangan bulat tidak boleh kurang dari jumlah elemen dalam array.

Untuk literal string, bilangan bulat harus setidaknya 1 lebih tinggi dari jumlah karakter dalam string. Ini karena karakter null ( ) selalu ditambahkan oleh compiler, di akhir array yang berupa string, dibatasi oleh tanda kutip ganda. Karakter null tidak ditambahkan di akhir larik kedua di atas, karena ini bukan string resmi. Array ketiga adalah string resmi. Kode berikut menunjukkan nilai subskrip minimum.

int arr[5] = {3, 4, 5, 6, 7};
char str[5] = {'w', 'o', 'm', 'a', 'n'};
char stri[6] = "woman";

Untuk membuat definisi kedua menjadi string resmi, karakter nol harus ditambahkan sebagai berikut:

int arr[5] = {3, 4, 5, 6, 7};
char str[6] = {'w', 'o', 'm', 'a', 'n', ' '};
char stri[6] = "woman";

Outputnya sekarang harus,

9
women
women

tanpa “wanita” kedua. Perhatikan bahwa subskrip yang sesuai untuk larik kedua adalah 6, dan bukan 5 seperti sebelumnya.

Nilai Literal Konstan

Untuk menghentikan karakter apa pun dalam tanda kutip ganda yang ditetapkan ke pengidentifikasi agar tidak dimodifikasi, nanti di dalam program, awali definisi dengan kata yang dicadangkan, const, sebagai berikut:

const char ident[] = "I love you";

Operasi dengan Literal String

Operasi Kesetaraan

Operator kesetaraan adalah == dan !=. Ketika variabel (pengidentifikasi) dari dua string dibandingkan, itu adalah pointer (alamat) dari literal yang akhirnya dibandingkan; itu salah. Untuk membandingkan string, literal harus dibandingkan, seperti pada kode berikut:

bool result = "woman" == "woman";
cout << result << 'n';

Outputnya adalah 1 untuk benar. Perbandingan dilakukan dengan cara kamus, tetapi dengan angka yang muncul terlebih dahulu dalam urutan menaik, sebelum huruf besar, yang muncul sebelum huruf kecil. Output dari kode berikut adalah 0, untuk false.

bool result = "woman" != "woman";
cout << result << 'n';

Operator Relasional dengan Literal String

Operator relasional tidak bekerja dengan literal string.

Literal String Mentah

Literal string mentah, memungkinkan string ditampilkan saat diketik, mengabaikan urutan escape dan menghormati baris baru. Perhatikan kode berikut:

char str[] = R"(abcd efg hij
klmn n " ' opq
rst)";
cout << str << 'n';

Outputnya adalah:

abcd efg hij
klmn n " ' opq
rst

Dalam kode, literal string mentah dimulai dengan R, diikuti oleh ” dan (. Berakhir dengan ) dan “.

Tipe Literal String Utama C++

arang

Tipe char adalah tipe C++ asli dan biasanya akan menyimpan karakter dalam 8 bit.

char16_t

Ini menyimpan karakter dalam 16 bit.

char32_t

Ini menyimpan karakter dalam 32 bit.

wchar_t

char16_t dan char32_t adalah karakter lebar. wchar_t adalah karakter lebar yang dipatenkan dan ditentukan implementasi.

Kesimpulan

Karakter literal adalah karakter tunggal dalam tanda kutip tunggal. Urutan pelarian adalah karakter yang juga bisa dalam tanda kutip tunggal. Sebuah literal string adalah urutan karakter dalam tanda kutip ganda. Literal string adalah larik karakter yang diakhiri dengan. Persamaan dan operator relasional bekerja dengan literal karakter. Operator kesetaraan bekerja dengan literal string, tetapi operator relasional tidak bekerja dengan literal string. Pengidentifikasi karakter dapat digunakan dalam perbandingan, tetapi pengidentifikasi string tidak boleh digunakan dalam perbandingan. Literal string mentah memungkinkan string ditampilkan saat diketik, mengabaikan urutan escape dan menghormati baris baru.

Chrys

Related Posts