Huruf Watak
Huruf watak adalah watak dalam petikan tunggal. Jadi,
charident1= 'KE'; charident2= 'b'; charident3= '4'; charident4= '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,
charident1= '' ';
adalah watak.
Simbol tunggal dalam petikan ganda bukan watak; ia adalah rentetan dari satu watak. Jadi A atau c atau 2 bukan watak tetapi rentetan satu watak masing-masing.
Pemboleh ubah char dapat ditugaskan kembali, kemudian turun dalam program, seperti berikut:
charident= 'x';
ident= 'DAN';
Untuk menghentikan watak yang diberikan kepada pengecam diubah, kemudian turun dalam program, mendahului definisi dengan kata yang dikhaskan, const, seperti berikut:
penyambung charident= 'd';Pemboleh ubah, ident dikatakan hanya boleh dibaca.
String Literal
Huruf rentas adalah urutan watak dalam petikan ganda. Jadi,
charident1[] = 'Saya sayang awak'; charident2[] = 'Saya benci 3 daripada anda'; charident3[]= 'kita adalah dunia'; charident4[] = 'Hai dunia!';
semua definisi literal rentetan 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 bilangan huruf dalam literal string boleh diletakkan di dalam tanda kurung. Walau bagaimanapun, lebih baik membiarkan kurungan persegi kosong.
Satu watak dalam petikan ganda bukan watak; ia adalah rentetan dari 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 boleh ditugaskan semula - lihat di bawah.
Petikan Tunggal dan Berganda dalam Karakter atau Literal
Untuk mempunyai satu petikan sebagai watak, lakukan seperti,
charident= ' '';Untuk mempunyai petikan berganda sebagai watak dalam literal rentetan, lakukan sesuatu seperti,
charident[] = 'jauh'CD';Tanda miring terbalik digunakan dalam urutan pelarian, untuk mengelakkan konflik dengan pembatas. Untuk mempunyai petikan berganda sebagai watak, tidak perlu garis miring terbalik: '' tidak mengapa. Untuk memiliki satu petikan dalam literal string, tidak perlu ada garis miring terbalik: tidak baik.
Oleh kerana garis miring terbalik digunakan untuk melarikan diri dari karakter, ia harus dilarikan dengan garis miring balik yang lain ketika digunakan sebagai karakter atau dalam huruf harfiah.
Urutan melarikan diri
Urutan melarikan diri adalah salah satu daripada:
''? \ ke b f n r> t vSetiap urutan pelarian biasanya ditaip sama ada sebagai 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 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:
charident[] = 'abc' 'def';kos<<ident<< ' n';
Keluarannya adalah: abcdef. Definisi ini dapat diperluas kepada 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:
charident[] = 'abc' 'def''mengambil nota';
kos<<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 mempunyai kes yang sama. Pertimbangkan,
hasil bool= 'B' == 'B';kos<<hasil<< ' n';
== bermaksud sama, sedangkan = bermaksud ditugaskan-dan tidak sama. Keluarannya adalah 1 untuk true. Pertimbangkan,
hasil bool= 'B' == 'b';kos<<hasil<< ' n';
Output adalah 0 untuk false. Pertimbangkan,
hasil bool= 'b' == 'c';kos<<hasil<< ' n';
Output adalah 0 untuk false. Pertimbangkan,
hasil bool= 'B' ! = 'B';kos<<hasil<< ' n';
! = bermaksud tidak sama, sedangkan = bermaksud ditugaskan-dan tidak tidak sama. Output adalah 0 untuk false. Pertimbangkan,
hasil bool= 'B' ! = 'b';kos<<hasil<< ' n';
Keluarannya adalah 1 untuk true. Pertimbangkan,
hasil bool= 'b' ! = 'c';kos<<hasil<< ' 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
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:
intarr[] = {3, 4, 5, 6, 7};charhlm[] = {'dalam', 'atau', 'm', 'ke', 'n'};
charberusaha[] = 'wanita';
Susunan pertama adalah susunan ints dan mempunyai lima elemen. Susunan kedua dan ketiga adalah tatasusunan 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 bagi susunan 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 menunjukkan 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 literal (array), yang bermaksud stri akan selalu menunjukkan lokasi yang mempunyai watak, w walaupun nilai w berubah. Ukuran literal string (array), lima elemen, tidak benar-benar tetap. Walau bagaimanapun, setiap nilai literal dapat diubahsuai.
Apakah pemalar 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:
intarr[] = {3, 4, 5, 6, 7};charhlm[] = {'dalam', 'atau', 'm', 'ke', 'n'};
charberusaha[] = 'wanita';
arr[3] = 9;
hlm[3] = 'Dan';
berusaha[3] = 'Dan';
kos<<arr[3] << ' n';
kos<<hlm<< ' n';
kos<<berusaha<< ' 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 dua kali. 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.
intarr[5] = {3, 4, 5, 6, 7};charhlm[5] = {'dalam', 'atau', 'm', 'ke', 'n'};
charberusaha[6] = 'wanita';
Untuk menjadikan definisi kedua sebagai rentetan rasmi, watak null harus ditambahkan seperti berikut:
intarr[5] = {3, 4, 5, 6, 7};charhlm[6] = {'dalam', 'atau', 'm', 'ke', 'n', ' 0'};
charberusaha[6] = 'wanita';
Hasilnya sekarang,
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:
penyambung charident[] = 'Saya sayang awak';Operasi dengan String Literals
Operasi Persamaan
Pengendali persamaan adalah == dan! =. Apabila pemboleh ubah (pengecam) dua rentetan dibandingkan, maka petunjuk (alamat) literal akhirnya dibandingkan; itu salah. Untuk membandingkan rentetan, harfiah harus dibandingkan, seperti dalam kod berikut:
hasil bool= 'wanita' == 'wanita';kos<<hasil<< ' 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';kos<<hasil<< ' 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:
charhlm[] =R'(abc\d efg diaklmn n' 'opq
rst) ';
kos<< str << ' n';
Keluarannya adalah:
abc \ d efg diaklmn n'' opq
rst
Dalam kod, literal string mentah bermula dengan R, diikuti oleh dan (. Ia berakhir 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 rentetan, tetapi operator 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