C ++

Cara menggunakan C ++ String Literal

Cara menggunakan C ++ String Literal
Papan kekunci komputer mempunyai aksara yang dicetak di atasnya. Apabila anda menekan kekunci, anda akan melihat watak di skrin. Catatan: ruang juga watak. Huruf rentas adalah urutan watak. Artikel ini menerangkan cara menggunakan literal string C ++. Anda harus mengetahui mengenai susunan dan petunjuk C ++ untuk memahami artikel ini.

Literal Perwatakan

Huruf watak adalah watak dalam petikan tunggal. Jadi,

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

semua definisi watak berbeza. Perhatikan bahawa digit dalam petikan tunggal adalah watak dan bukan bilangan bulat.

Urutan melarikan diri seperti \ ”(lihat di bawah) dalam petikan tunggal, adalah watak. Jadi,

char ident1 = '"';

adalah watak.

Simbol tunggal dalam petikan ganda bukan watak; ia adalah rentetan satu watak. Jadi "A" atau "c" atau "2" bukan watak tetapi rentetan satu watak masing-masing.

Pembolehubah char dapat ditugaskan kembali, kemudian turun dalam program, seperti berikut:

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

Untuk menghentikan watak yang diberikan kepada pengecam diubah, kemudian turun dalam program, mendahului definisi dengan kata terpelihara, const, seperti berikut:

const char ident = 'd';

Pemboleh ubah, ident dikatakan hanya boleh dibaca.

String Literal

Huruf rentas adalah urutan watak dalam petikan ganda. Jadi,

char ident1 [] = "Saya sayang awak"; char ident2 [] = "Saya benci 3 daripada anda"; char ident3 []
= "kita adalah dunia"; char ident4 [] = "Hello World!";

adalah semua definisi literal rentetan yang berbeza. Perhatikan penggunaan petikan ganda. Tidak ada seperti pemboleh ubah biasa untuk rentetan. String literal adalah susunan huruf, di mana bukannya membatasi dengan , urutannya dibatasi dengan "". Huruf tidak dipisahkan dengan koma. Sebilangan nombor yang lebih besar daripada jumlah huruf dalam literal string boleh diletakkan di dalam tanda kurung persegi. Walau bagaimanapun, lebih baik membiarkan kurungan persegi kosong.

Watak tunggal dalam petikan ganda bukan watak; ia adalah rentetan satu watak. Jadi "A" atau "c" atau "2" bukan watak, tetapi rentetan satu watak masing-masing.

Pemboleh ubah rentetan tidak membenarkan penugasan semula literal lengkap, kemudian turun dalam program - lihat di bawah. Walau bagaimanapun, watak individu dapat ditugaskan semula - lihat di bawah.

Petikan Tunggal dan Berganda dalam Karakter atau Literal

Untuk mempunyai satu petikan sebagai watak, lakukan perkara seperti itu,

char ident = '\' ';

Untuk mempunyai petikan berganda sebagai watak dalam literal rentetan, lakukan sesuatu seperti itu,

char ident [] = "ab" cd ";

Tanda belakang digunakan dalam urutan pelarian, untuk mengelakkan konflik dengan pembatas. Untuk mempunyai petikan ganda sebagai watak, tidak perlu garis miring terbalik: '' 'tidak mengapa. Untuk memiliki satu petikan dalam literal string, tidak perlu garis miring terbalik: "ab'cd" tidak apa-apa.

Oleh kerana garis miring terbalik digunakan untuk melarikan diri dari karakter, ia harus dilarikan dengan garis miring terbalik yang lain ketika digunakan sebagai karakter atau dalam huruf harfiah.

Urutan melarikan diri

Urutan melarikan diri adalah salah satu daripada:

\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ v

Setiap urutan pelarian biasanya ditaip sama ada watak dalam tanda petik tunggal atau sebagai urutan pelarian dalam petikan ganda.

Operasi dengan Watak

Gabungan

Pada definisi, dua literal string boleh digabungkan dengan ruang seperti berikut:

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

Keluarannya adalah: abcdef . Definisi ini dapat diperluas hingga lebih dari dua literal. Catatan: pernyataan itu adalah definisi, bukan hanya tugasan. Definisi bahkan boleh terus ke baris seterusnya dengan ruang yang memisahkan garis seperti berikut:

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

Keluarannya adalah, abcdefghi.

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

Pengendali Kesamarataan

Watak yang sama pada kes yang sama adalah sama. Mereka tidak sama jika tidak sama. Pertimbangkan,

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

== bermaksud sama, sedangkan = bermaksud ditugaskan-dan tidak sama. Keluarannya adalah 1 untuk true. Pertimbangkan,

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

Output adalah 0 untuk false. Pertimbangkan,

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

Output adalah 0 untuk false. Pertimbangkan,

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

!= bermaksud tidak sama, sedangkan = bermaksud ditugaskan-dan tidak tidak sama. Output adalah 0 untuk false. Pertimbangkan,

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

Keluarannya adalah 1 untuk true. Pertimbangkan,

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

Keluarannya adalah 1 untuk true.

Jadi, == dan != adalah pengendali persamaan.

Pengendali Perhubungan

Untuk watak biasa dalam huruf C ++, dalam urutan menaik, angka muncul sebelum huruf besar, yang muncul sebelum huruf kecil.

Jadi < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = dijelaskan sama.

String Literal sebagai Objek

Array adalah penunjuk berterusan ke permulaan urutan jenis data tertentu. Begitu juga, rentetan adalah penunjuk berterusan ke permulaan urutan watak. Bandingkan definisi berikut:

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

Susunan pertama adalah susunan ints dan mempunyai lima elemen. Susunan kedua dan ketiga ialah susunan watak dengan nama yang berbeza, tetapi bilangan elemennya sama. Susunan kedua dan ketiga adalah sama, tetapi untuk namanya. Kandungan teks larik kedua dibatasi dengan pendakap; watak dipisahkan dengan koma dan setiap watak dalam petikan tunggal. Kandungan teks larik ketiga dibatasi dengan tanda petik dua kali; watak tidak dipisahkan dengan koma dan setiap watak tidak dalam tanda petik tunggal. Susunan kedua dan ketiga adalah dua cara menghasilkan rentetan, dengan cara ketiga menjadi cara yang lebih baik.

arr adalah penunjuk berterusan ke elemen pertama dari susunannya, yang bermaksud arr akan selalu menunjuk ke lokasi yang mempunyai bilangan bulat, 3 walaupun nilai 3 diubah. Ukuran susunan, lima elemen, tidak betul-betul tetap. Walau bagaimanapun, setiap nilai array dapat diubah.

str adalah penunjuk berterusan ke elemen pertama dari susunannya, yang bermaksud str akan selalu menunjuk ke lokasi yang mempunyai watak, 'w' walaupun nilai 'w' diubah. Ukuran susunan watak, lima elemen, tidak betul-betul tetap. Walau bagaimanapun, setiap nilai literal dapat diubah.

stri adalah penunjuk berterusan ke elemen pertama dari literal (array), yang bermaksud stri akan selalu menunjukkan lokasi yang mempunyai watak, w walaupun nilai w diubah. Ukuran literal string (array), lima elemen, tidak benar-benar tetap. Walau bagaimanapun, setiap nilai literal dapat diubahsuai.

Apa yang tetap dalam laras atau rentetan rentetan? Alamat memori elemen pertama array atau literal tetap sebagai nilai nama (pengenal) array atau literal, dan tidak dapat diubah. Nah, ukuran susunan atau literal tidak benar-benar tetap. Setiap nilai dalam susunan atau literal dapat diubah. Kod berikut menunjukkan bagaimana elemen keempat setiap susunan telah diubah:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "wanita";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

Keluarannya adalah:

9
wanita wanita
wanita

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

Langganan Definisi

Perhatikan bahawa dalam definisi di atas, tidak ada bilangan bulat untuk langganan. Apabila bilangan elemen tidak dapat ditentukan dengan mudah, oleh pengaturcara, bilangan bulat untuk langganan harus dihilangkan. Walau apa pun, bilangan bulat tidak boleh kurang daripada bilangan elemen dalam larik.

Untuk literal string, bilangan bulat harus sekurang-kurangnya 1 lebih tinggi daripada bilangan watak dalam rentetan. Ini kerana watak null (\ 0) selalu ditambahkan oleh penyusun, pada akhir array yang merupakan rentetan, dibatasi oleh tanda petik. Karakter nol tidak ditambahkan pada akhir larik kedua di atas, kerana ia bukan rentetan rasmi. Susunan ketiga adalah rentetan rasmi. Kod berikut menunjukkan nilai langganan minimum.

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

Untuk menjadikan definisi kedua sebagai rentetan rasmi, watak null harus ditambahkan seperti berikut:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "wanita";

Keluarannya sekarang seharusnya,

9
wanita
wanita

tanpa "wanita" kedua. Perhatikan bahawa subskrip yang sesuai untuk array kedua adalah 6, dan bukan 5 seperti sebelumnya.

Nilai Literal Tetap

Untuk menghentikan sebarang watak dalam petikan ganda yang diberikan kepada pengecam daripada diubah, kemudian turun dalam program, mendahului definisi dengan kata yang dikhaskan, const, seperti berikut:

const char ident [] = "Saya sayang awak";

Operasi dengan String Literals

Operasi Persamaan

Pengendali persamaan adalah == dan != . Apabila pemboleh ubah (pengecam) dua rentetan dibandingkan, itu adalah petunjuk (alamat) literal yang akhirnya dibandingkan; itu salah. Untuk membandingkan rentetan, harfiah harus dibandingkan, seperti dalam kod berikut:

hasil bool = "wanita" == "wanita";
cout << result << '\n';

Keluarannya adalah 1 untuk true. Perbandingan dilakukan dengan cara kamus, tetapi dengan angka yang didahulukan dalam urutan menaik, sebelum huruf besar, yang muncul sebelum huruf kecil. Keluaran kod berikut adalah 0, untuk false.

hasil bool = "wanita" != "wanita";
cout << result << '\n';

Operator Relasional dengan String Literals

Operator hubungan tidak berfungsi dengan literal rentetan.

String Raw Raw

Huruf mentah harfiah, membolehkan rentetan ditampilkan sebagai diketik, mengabaikan urutan pelarian dan menghormati baris baru. Pertimbangkan kod berikut:

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

Keluarannya adalah:

abc \\ d efg hij
klmn \ n "'opq
rst

Dalam kod, literal string mentah bermula dengan R, diikuti oleh "dan ( . Diakhiri dengan) dan ".

Jenis Literal String Utama C ++

char

Jenis char adalah jenis C ++ yang asli dan biasanya menyimpan watak dalam 8 bit.

char16_t

Ini menyimpan watak dalam 16 bit.

char32_t

Ini menyimpan watak dalam 32 bit.

wchar_t

char16_t dan char32_t adalah watak yang luas. wchar_t adalah watak luas yang ditentukan oleh hak milik dan pelaksanaan.

Kesimpulannya

Huruf watak adalah watak tunggal dalam petikan tunggal. Urutan melarikan diri adalah watak yang juga boleh terdapat dalam petikan tunggal. Huruf rentas adalah urutan watak dalam petikan ganda. String literal adalah susunan watak yang diakhiri dengan \ 0. Pengendali persamaan dan hubungan bekerja dengan literal watak. Pengendali kesetaraan bekerja dengan literal string, tetapi pengendali hubungan tidak berfungsi dengan literal rentetan. Pengecam watak boleh digunakan dalam perbandingan, tetapi pengenal rentetan tidak boleh digunakan dalam perbandingan. Huruf string mentah membolehkan rentetan ditampilkan sebagai diketik, mengabaikan urutan pelarian dan menghormati baris baru.

Chrys

Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...
Permainan Makmal Apl Oculus Teratas
Sekiranya anda adalah pemilik alat dengar Oculus, maka anda mesti mengetahui tentang memuatkan sideload. Sideloading adalah proses memasang kandungan ...
10 Permainan Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform dominan untuk permainan kerana peratusan besar permainan yang sedang berkembang hari ini untuk meny...