Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa mảng ký tự và chuỗi

C ++ hỗ trợ cả hai, mảng ký tự và chuỗi, vì C ++ có lợi ích đáng kể trong việc sử dụng cả hai. Nhưng, không có khả năng hoạt động trên mảng ký tự làm tăng sự phát triển của chuỗi lớp. Cả một mảng ký tự và chuỗi chứa chuỗi ký tự. Nhưng sự khác biệt cơ bản giữa mảng ký tự và chuỗi ký tự là mảng ký tự của dòng Cameron không thể được vận hành với các toán tử tiêu chuẩn, trong khi đó, các đối tượng của chuỗi Chuỗi có thể được vận hành với các toán tử chuẩn. Hãy nghiên cứu sự khác biệt khác giữa một mảng ký tự và chuỗi.

Biểu đồ so sánh

Cơ sở để so sánhMảng nhân vậtChuỗi
Căn bảnMảng ký tự là tập hợp các biến, của kiểu dữ liệu ký tự.Chuỗi là lớp và các biến của chuỗi là đối tượng của lớp "chuỗi".
Cú phápchar mảng_name [size];chuỗi string_name;
Lập chỉ mụcMột ký tự riêng lẻ trong một mảng ký tự có thể được truy cập bởi chỉ mục của nó trong mảng.Trong chuỗi, ký tự cụ thể có thể được truy cập bởi hàm "string_name.charAt (index)".
Loại dữ liệuMột mảng ký tự không xác định kiểu dữ liệu.Một chuỗi định nghĩa một kiểu dữ liệu trong C ++.
Người vận hànhCác toán tử trong C ++ không thể được áp dụng trên mảng ký tự.Bạn có thể áp dụng toán tử C ++ chuẩn trên chuỗi.
Ranh giớiRanh giới mảng dễ dàng bị tràn ngập.Ranh giới sẽ không tràn ngập.
Truy cậpTruy cập nhanh.Truy cập chậm.


Định nghĩa mảng ký tự

Mảng ký tự là tập hợp các biến của kiểu dữ liệu của char char nó có thể là mảng một chiều hoặc mảng hai chiều. Nó cũng được gọi là chuỗi null null kết thúc chuỗi. Mảng ký tự là một chuỗi các ký tự được lưu trữ trong các địa chỉ bộ nhớ liên tiếp. Trong một mảng ký tự, một ký tự cụ thể có thể được truy cập bởi chỉ mục của nó. Một nhân vật Null Null khác chấm dứt mảng nhân vật.

Hãy lấy một ví dụ về mảng ký tự: -

 tên char [] = {'A', 'j', 'a', 'y', '\ 0'}; hoặc tên char [] = "Ajay"; 

Ở đây, tên char char là một kiểu dữ liệu ký tự, tên của tên là tên biến của mảng ký tự. Tôi đã chỉ ra hai cách để khởi tạo mảng ký tự. Trong phương thức đầu tiên, null được đề cập rõ ràng và trong phương thức thứ hai, trình biên dịch sẽ tự động chèn null.

Kết thúc chuỗi luôn là một ký tự null; nó là ký tự kết thúc của mảng ký tự. Mảng ký tự không phải là kiểu dữ liệu tích hợp; chúng ta tạo mảng ký tự bằng cách khai báo nó. Bạn không thể áp dụng các toán tử tiêu chuẩn trên một mảng ký tự. Để hoạt động trên mảng ký tự, có một số hàm dựng sẵn như, (strlen (), strlwr (), strupr (), strcat ()). Vì các toán tử tiêu chuẩn không thể được áp dụng cho một mảng ký tự, chúng không thể tham gia vào bất kỳ biểu thức nào.

Con trỏ ký tự đến một mảng ký tự cũng có thể được tạo.

Hãy hiểu nó với một ví dụ.

 char s1 [] = "Xin chào"; char s2 [] = "Thưa ngài"; s1 = s1 + s2; // toán tử lỗi không thể được áp dụng s2 = s1; // lỗi Con trỏ ký tự char * s = "Morning"; char * p; p = s; // thực thi 

Trong ví dụ trên, chúng tôi đã khai báo hai mảng ký tự s1, s2 và hai con trỏ ký tự s và p. Mảng ký tự s1 và s2 được khởi tạo, chúng ta có thể thấy rằng cả toán tử cộng (+) và toán tử gán đều không hoạt động trên mảng ký tự. Nhưng một con trỏ ký tự có thể được gán cho một con trỏ ký tự khác.

Hãy nhớ rằng một khi mảng ký tự được khởi tạo, nó không thể được khởi tạo lại thành một bộ ký tự khác. Việc truy cập vào một mảng ký tự hoặc một chuỗi kết thúc null là nhanh so với chuỗi trong C ++.

Định nghĩa chuỗi

Chuỗi không phải là kiểu dữ liệu tích hợp của C ++. Nó là một đối tượng lớp của kiểu chuỗi String. Như trong C ++, việc tạo ra một lớp cũng giống như tạo ra một kiểu kiểu Cameron. Lớp dây Chuỗi là một phần của thư viện C ++. Nó chứa toàn bộ tập hợp ký tự hoặc mảng ký tự. Có ba lý do đằng sau sự phát triển của một lớp chuỗi tiêu chuẩn.

  • Đầu tiên là tính nhất quán của Tử vi, các mảng ký tự không phải là kiểu dữ liệu theo cách riêng của chúng.
  • Thứ hai là sự tiện lợi của Cameron, bạn không thể sử dụng các toán tử tiêu chuẩn trên một mảng ký tự.
  • Thứ ba là an toàn, các ranh giới mảng dễ bị tràn ngập.

Hãy để chúng tôi hiểu các chuỗi với một ví dụ.

 chuỗi s1; s1 = "Xin chào"; chuỗi s2 ("Chào buổi sáng"); chuỗi s3 = "Hennery"; chuỗi s4; 

Trong khai báo trên, bốn biến chuỗi hoặc đối tượng (s1, s2, s3, s4) được khai báo. Trong khai báo trên, tôi đã chỉ ra ba cách khởi tạo chuỗi. Chuỗi s1 được khai báo và sau đó khởi tạo riêng. Chuỗi s2 được khởi tạo bởi hàm tạo của lớp Chuỗi String. Chuỗi s3 được khởi tạo tại thời điểm khai báo như kiểu dữ liệu thông thường. Chúng ta có thể áp dụng toán tử chuẩn cho các biến chuỗi.

 s4 = s1; // gán một đối tượng chuỗi cho s4 = s1 + s2; // thêm hai chuỗi và lưu trữ kết quả trong chuỗi thứ ba if (s3> s2) // so sánh hai chuỗi chuỗi s5 (s1); tạo một đối tượng chuỗi mới bằng cách sử dụng đối tượng chuỗi hiện có 

Trong mã trên, các toán tử khác nhau được áp dụng trên một chuỗi và các hoạt động khác nhau được thực hiện. Câu lệnh đầu tiên sao chép một đối tượng chuỗi sang đối tượng chuỗi khác. Trong câu lệnh thứ hai, hai chuỗi được nối và lưu trữ trong chuỗi thứ ba. Trong câu lệnh thứ ba, hai chuỗi được so sánh. Trong câu lệnh thứ tư, một đối tượng chuỗi mới được tạo bằng cách sử dụng đối tượng chuỗi đã tồn tại.

Truy cập vào chuỗi chậm so với một mảng ký tự hoặc chuỗi kết thúc null.

Sự khác biệt chính giữa Mảng ký tự và Chuỗi

  1. Mảng ký tự là một tập hợp các biến có kiểu dữ liệu ký tự. Chuỗi là một lớp được khởi tạo để khai báo chuỗi.
  2. Sử dụng giá trị chỉ mục, bạn có thể truy cập một ký tự từ một mảng ký tự. Mặt khác, nếu bạn muốn truy cập một ký tự cụ thể trong một chuỗi, bạn có thể truy cập nó theo hàm chuỗi's_name.charAt (index).
  3. Vì một mảng không phải là kiểu dữ liệu tương tự, một ký tự cũng không phải là kiểu dữ liệu. Mặt khác, String là một lớp hoạt động như một kiểu tham chiếu, do đó, có thể nói String là một kiểu dữ liệu.
  4. Bạn không thể áp dụng bất kỳ toán tử nào trên một mảng ký tự trong khi đó, bạn có thể áp dụng các toán tử trên Chuỗi.
  5. Là một mảng ký tự mảng có độ dài cố định và ranh giới của nó có thể dễ dàng bị vượt qua. Trường hợp String không có bất kỳ ranh giới.
  6. Các phần tử mảng được lưu trữ trong một vị trí bộ nhớ liền kề do đó có thể được truy cập nhanh hơn biến chuỗi.

Phần kết luận:

Không có khả năng hoạt động trên mảng ký tự đã làm tăng sự phát triển của lớp chuỗi tiêu chuẩn.

Top