Mọi thứ bạn cần biết về chuỗi trong C ++



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về Chuỗi trong C ++ và cũng sẽ cung cấp các ví dụ về các phép toán khác nhau.

Thời hạn nghĩa là một dãy ký tự có thứ tự. Một chuỗi các ký tự có thể được biểu diễn bằng một đối tượng của một lớp trong C ++. Lớp cung cấp một định nghĩa để làm như vậy được gọi là lớp Chuỗi. Lớp chuỗi lưu trữ các ký tự dưới dạng một chuỗi byte với chức năng cho phép truy cập vào ký tự byte đơn. Trong C ++, các dấu phân cách bao quanh là dấu ngoặc kép. Trong bài viết “Chuỗi trong C ++” này, tôi sẽ thảo luận về các chủ đề sau:

Sự khác biệt của lớp chuỗi và mảng ký tự

Lớp chuỗi Mảng ký tự
Lớp chuỗi là một lớp định nghĩa các đối tượng có thể được biểu diễn dưới dạng một luồng ký tựMảng ký tự chỉ đơn giản là một mảng các ký tự.
Trong trường hợp chuỗi, bộ nhớ được cấp phát động do đó có thể cấp phát nhiều bộ nhớ hơn tại thời điểm chạy theo yêu cầuKích thước của mảng ký tự phải được cấp phát tĩnh do đó không thể cấp phát thêm bộ nhớ tại thời điểm chạy nếu cần
Lớp chuỗi định nghĩa một số chức năng cho phép các hoạt động đa tạp trên chuỗi.Mảng ký tự không cung cấp nhiều hàm tích hợp để thao tác chuỗi
Các chuỗi chậm hơn khi so sánh với việc triển khai so với mảng ký tự.Việc triển khai một mảng ký tự là nhanh hơn.

Khai báo và khởi tạo chuỗi trong C ++

strings-in-c++Khởi tạo chuỗi trong C ++ khá đơn giản !. Chúng tôi có thể sử dụng bất kỳ một trong các phương pháp sau.





sử dụng không gian tên std string std_string

hoặc là

std :: string std_string
#include using namespace std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Xin chào bởi st' std :: string std_st = 'Xin chào bởi std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Đầu ra:



Xin chào bởi ch Xin chào bởi st Xin chào bởi std_st

Trong ví dụ này, chúng tôi đã hiển thị cả mảng ký tự (ch) và chuỗi clphương thức khởi tạo ass (st và std_st). Đầu tiên, chúng ta sử dụng phương thức mảng ký tự bằng cách xác định mảng ký tự ch [12] chứa 12 phần tử và kết thúc bằng ký tự null. Trong phần thứ hai, chúng tôi đã sử dụng một phương thức lớp chuỗi.

Các hoạt động trên chuỗi trong C ++

Ưu điểm của việc sử dụng lớp chuỗi là có một số hàm tích hợp sẵn trong C ++ để thao tác với chúng. Điều này giúp cho việc lập trình trở nên dễ dàng và hiệu quả. Chúng ta hãy xem xét một số hàm thao tác chuỗi quan trọng nhất định và hiểu chúng bằng cách xem một số ví dụ.

Kích thước chuỗi: Cả hai phương thức size () và length () đều có thể được sử dụng để trả về kích thước của đối tượng.



Giá cả<< st.length() <

Đầu ra:

11 11

Kết nối chuỗi: Chúng ta có thể nối hai hoặc nhiều chuỗi đơn giản bằng cách sử dụng toán tử + giữa chúng

string new_string = st + 'và' + std_st cout<< new_string <

Đầu ra:

Xin chào bởi st và Xin chào bởi std_st

Chuỗi sắp xếp: Hàm thành viên lớp .append (string) có thể được sử dụng để nối và nối một chuỗi tại một vị trí ký tự cụ thể trong chuỗi. Nếu một lập trình viên đặt str.append (str1, p, n), thì có nghĩa là n số ký tự từ vị trí p trong chuỗi str1 sẽ được thêm vào cuối chuỗi str.

string str = 'Tôi thích học' string str1 = 'Python, C ++ hoặc C' str.append (str1, 8, 3) cout<< str << endl

Đầu ra:

Tôi thích học C ++

Tìm kiếm chuỗi: Chúng ta có thể sử dụng hàm thành viên find () để tìm lần xuất hiện đầu tiên của một chuỗi bên trong một chuỗi khác. find () sẽ tìm kim chuỗi bên trong đống cỏ khô của chuỗi bắt đầu từ vị trí vị trí và trả về vị trí xuất hiện đầu tiên của kim. Hàm rfind () hoạt động tương tự, ngoại trừ nó trả về lần xuất hiện cuối cùng của chuỗi được truyền vào.

string haystack = 'Xin chào Thế giới!' string kim = 'o' cout<< haystack.find(needle)<

Đầu ra:

4 4 7 4294967295

Lệnh cout đầu tiên sẽ chỉ cần in ra “4” là chỉ mục của lần xuất hiện đầu tiên của “o” trong chuỗi haystack. Nếu chúng ta muốn chữ “o” trong “World”, chúng ta cần sửa đổi “pos” để trỏ qua lần xuất hiện đầu tiên. haystack.find (kim, 4) lại trả về 4, trong khi haystack.find (kim, 5) sẽ trả về 7. Nếu không tìm thấy chuỗi con, find () trả về std :: string :: npos.

Npos là một giá trị đặc biệt bằng giá trị lớn nhất có thể biểu diễn bằng kiểu size_type. Ở đây nó là 4294967295. Nói chung, nó được sử dụng làm chỉ báo kết thúc chuỗi bởi các hàm mong đợi một chỉ số chuỗi hoặc làm chỉ báo lỗi bởi các hàm trả về chỉ số chuỗi.

máy quét làm gì trong java

Đoạn mã đơn giản này tìm kiếm một chuỗi cho tất cả các lần xuất hiện của “C ++” trong str2 và in ra vị trí của chúng:

string str2 = 'C ++ là một ngôn ngữ lập trình hướng đối tượng và bao gồm các lớp, kế thừa, đa hình, trừu tượng hóa dữ liệu và đóng gói.C ++ cho phép xử lý ngoại lệ và nạp chồng hàm không thể thực hiện được trong C.C ++ là một ngôn ngữ mạnh mẽ, hiệu quả và nhanh chóng. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Đầu ra:

Đã tìm thấy sự xuất hiện của 'C ++' ở vị trí 0 Đã tìm thấy sự xuất hiện của 'C ++' ở vị trí 132 Đã tìm thấy sự xuất hiện của 'C ++' ở vị trí 217
#include using namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Liên kết muộn (RTP) ptr-> fun_3 () // Liên kết muộn (RTP) ptr-> fun_4 () // Liên kết sớm nhưng lệnh gọi hàm này // không hợp lệ (tạo ra lỗi) vì con trỏ // là kiểu cơ sở và hàm thuộc // lớp dẫn xuất // p-> fun_4 (5)}

Đầu ra:

hàm lớp cơ sở 1 hàm lớp dẫn xuất 2 hàm lớp cơ sở 3 hàm lớp cơ sở 4

Với điều này, chúng ta kết thúc bài viết này về Chuỗi trong C ++. Tôi hy vọng bạn đã hiểu về các Thao tác khác nhau có thể được thực hiện trên nó. Nếu bạn muốn tìm hiểu thêm, hãy xem Đào tạo Java của Edureka, một công ty học trực tuyến đáng tin cậy. Edureka's khóa đào tạo và cấp chứng chỉ được thiết kế để đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.