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 \ vSetiap urutan pelarian biasanya ditaip sama ada watak dalam tanda petik tunggal atau sebagai urutan pelarian dalam petikan ganda.
- \ ': digunakan sebagai watak petikan tunggal, dalam tanda petik tunggal.
- \ ": Digunakan sebagai watak petikan ganda, dalam literal.
- \? : sejak ? adalah watak terpelihara, ia harus dilarikan secara harfiah.
- \\: garis miring terbalik harus dilarikan sebagai watak atau dalam huruf harfiah, agar tidak menghasilkan makna lain.
- \ a: membunyikan loceng penggera sekali, ketika digunakan sebagai watak atau dalam string harfiah.
- \ b: hasilnya sebagai ruang belakang dalam paparan dalam string harfiah, melepaskan watak sebelumnya.
- \ f: menyebabkan halaman seterusnya dimasukkan ke pencetak ketika digunakan sebagai watak atau dalam literal.
- \ r: mengembalikan kursor, di mana watak seterusnya akan dicetak, tetapi berada dalam baris semasa.
- \ n: mengembalikan kursor ke permulaan baris seterusnya atau hanya ke baris seterusnya, bergantung pada sistem operasi.
- \ t: membuat tab mendatar.
- \ v: membuat tab menegak.
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:
9wanita 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,
9wanita
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 hijklmn \ n "'opq
rst) ";
cout << str << '\n';
Keluarannya adalah:
abc \\ d efg hijklmn \ 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