Disyorkan, 2024

Pilihan Editor

Perbezaan antara Array Watak dan String

C ++ menyokong kedua-dua, Aras dan rentetan aksara, kerana C ++ mempunyai manfaat yang besar dalam menggunakan kedua-duanya. Tetapi, ketidakupayaan untuk beroperasi pada pelbagai watak menimbulkan perkembangan rentetan kelas. Kedua-dua watak dan rentetan watak mengandungi urutan aksara. Tetapi perbezaan asas antara array watak dan rentetan adalah bahawa "array karakter" tidak dapat dikendalikan dengan pengendali standard, sedangkan, objek "rentetan" boleh dikendalikan dengan pengendali standard. Mari kita mengkaji perbezaan lain di antara pelbagai watak dan rentetan.

Carta Perbandingan

Asas untuk PerbandinganArray aksaraTali
AsasAras watak ialah koleksi pembolehubah, jenis data aksara.String adalah kelas dan pembolehubah rentetan adalah objek "rentetan" kelas.
Sintakschar array_name [size];string stringname;
PengindeksanWatak individu dalam pelbagai watak boleh diakses oleh indeksnya dalam pelbagai.Dalam rentetan watak tertentu boleh diakses oleh fungsi "string_name.charAt (indeks)".
Jenis dataPelbagai aksara tidak menentukan jenis data.Rentetan menentukan jenis data dalam C ++.
PengendaliPengendali dalam C ++ tidak boleh digunakan pada pelbagai aksara.Anda boleh menggunakan operator C ++ standard pada rentetan.
SempadanBatas Array mudah dibendung.Sempadan tidak akan melampaui batas.
AksesAkses cepat.Akses perlahan.


Definisi Array Watak

Pelbagai watak ialah koleksi pembolehubah data "char"; ia boleh menjadi satu dimensi array atau array dua dimensi. Ia juga dipanggil "null terminated string". Aras aksara ialah urutan aksara yang disimpan dalam alamat memori berturut-turut. Dalam pelbagai karakter, watak tertentu boleh diakses oleh indeksnya. A "Null character" menamatkan pelbagai aksara ".

Mari kita ambil contoh pelbagai watak: -

 nama char [] = {'A', 'j', 'a', 'y', '\ 0'}; atau nama char [] = "Ajay"; 

Di sini, "char" adalah jenis data aksara, "nama" adalah nama ubah array watak. Saya telah menunjukkan dua cara untuk menginisialisasi pelbagai watak. Dalam kaedah pertama, null secara jelas disebutkan dan dalam kaedah kedua, pengkompil secara automatik memasukkan null.

Penghujung rentetan selalu menjadi watak batal; ia adalah watak menamatkan pelbagai watak. Aras watak bukan jenis data terbina dalam; kami membuat pelbagai watak dengan mengisytiharkannya. Anda tidak boleh menggunakan operator standard pada pelbagai aksara. Untuk beroperasi pada array watak terdapat beberapa fungsi terbina dalam seperti (strlen (), strlwr (), strupr (), strcat ()). Oleh kerana pengendali standard tidak boleh digunakan untuk pelbagai watak, mereka tidak boleh mengambil bahagian dalam apa-apa ungkapan.

Penuding aksara ke pelbagai watak juga boleh dibuat.

Mari kita fahami dengan contohnya.

 char s1 [] = "Hello"; char s2 [] = "Sir"; s1 = s1 + s2; / // pengendali kesalahan tidak boleh digunakan s2 = s1; / // ralat penuding Watak char * s = "Pagi"; char * p; p = s; // melaksanakan 

Dalam contoh di atas, kami telah mengisytiharkan dua array karakter s1, s2 dan dua pointer karakter s dan p. Aras watak s1 dan s2 diasaskan, kita dapat melihat bahawa pengendali penambahan (+) atau pengendali tugasan tidak berfungsi pada array watak. Tetapi penunjuk karakter boleh ditugaskan kepada penunjuk aksara yang lain.

Ingat sekali array watak yang diasumsikan ia tidak dapat diinisialisasi semula ke set aksara yang lain. Akses ke array watak atau rentetan yang ditamatkan tidak sah berbanding dengan rentetan dalam C ++.

Definisi String

Rentetan bukan jenis data terbina dalam C ++. Ia objek kelas jenis "rentetan". Seperti dalam C ++ mencipta kelas adalah seperti membuat "jenis". Kelas "rentetan" adalah sebahagian daripada perpustakaan C ++. Ia memegang set aksara atau watak watak secara keseluruhan. Terdapat tiga sebab di sebalik perkembangan kelas rentetan standard.

  • Pertama ialah "konsistensi", tatasusunan watak bukan jenis data dalam hak mereka sendiri.
  • Kedua adalah "kemudahan", anda tidak boleh menggunakan pengendali standard pada pelbagai aksara.
  • Ketiga adalah "keselamatan", sempadan pelbagai mudah ditenggelami.

Marilah kita memahami rentetan dengan contoh.

 tali s1; s1 = "Hello"; string s2 ("Selamat pagi"); rentetan s3 = "Hennery"; rentetan s4; 

Dalam perisytiharan di atas, empat pembolehubah rentetan atau objek (s1, s2, s3, s4) diisytiharkan. Dalam perisytiharan di atas, saya telah menunjukkan tiga cara untuk menginisialisasi rentetan. Rentetan s1 diisytiharkan dan kemudiannya diisytiharkan secara berasingan. Rentetan s2 diasaskan oleh pembina kelas "String". Rentetan s3 diisytiharkan pada masa perisytiharannya sebagai jenis data biasa dilakukan. Kita boleh menggunakan pengendali standard untuk pemboleh ubah rentetan.

 s4 = s1; // memberikan satu objek rentetan kepada s4 = s1 + s2 yang lain; / / menambah dua rentetan dan menyimpan hasil dalam rentetan ketiga jika (s3> s2) // membandingkan dua tali rentetan s5 (s1); mewujudkan objek rentetan baru menggunakan objek rentetan sedia ada 

Dalam kod di atas, pelbagai operator digunakan pada rentetan dan pelbagai operasi dilakukan. Kenyataan pertama menyalin satu objek rentetan kepada objek rentetan yang lain. Dalam pernyataan kedua, dua tali disambungkan dan disimpan dalam rentetan ketiga. Dalam pernyataan ketiga, dua rentetan dibandingkan. Dalam pernyataan keempat, objek rentetan baru dibuat menggunakan objek rentetan sedia ada.

Akses kepada rentetan adalah lambat berbanding dengan pelbagai watak atau rentetan yang ditamatkan null.

Perbezaan Utama Antara Array Watak dan String

  1. Aras watak ialah kumpulan pembolehubah yang merupakan watak datatype. String ialah kelas yang diisytiharkan untuk mengisytiharkan tali.
  2. Menggunakan nilai indeks anda boleh mengakses aksara dari pelbagai aksara. Sebaliknya, jika anda ingin mengakses watak tertentu dalam rentetan, anda boleh mengaksesnya dengan fungsi string's_name.charAt (indeks).
  3. Oleh kerana array bukanlah datatype sama dengan wataknya juga bukan jenis data. Sebaliknya, String menjadi tindakan kelas sebagai jenis rujukan, maka boleh dikatakan String adalah jenis data.
  4. Anda tidak boleh memohon pengendali mana-mana pada pelbagai aksara sedangkan, anda boleh memohon pengendali pada String.
  5. Menjadi array watak array mempunyai panjang yang tetap dan sempadannya boleh dengan mudah dibendung. Di mana String tidak mempunyai sebarang sempadan.
  6. Unsur-unsur array disimpan dalam lokasi memori bersebelahan yang dapat diakses lebih cepat daripada pemboleh ubah rentetan.

Kesimpulan:

Ketidakupayaan untuk beroperasi pada pelbagai watak menimbulkan pembangunan kelas rentetan standard.

Top