4.3.11 Tìm một chuỗi trong chuỗi khác

Đôi khi chúng ta không chỉ trích xuất một chuỗi con từ một chuỗi cụ thể, mà còn (phức tạp hơn nhiều) đó là tìm một chuỗi con trong một chuỗi khác, có tính đến khả năng nó có thể thất bại.

string có thể làm điều này cho chúng ta. Nó có thể tìm kiếm một chuỗi con hoặc một ký tự duy nhất. Với mục đích này, chúng ta cần phải sử dụng một trong những biến thể của hàm thành viên có tên là find. Hai trong số đó đặc biệt hữu ích:

int where_it_begins = S.find (another_string, start_here);
int where_it_is = S.find (any_character, start_here);

Trong cả hai biến thể, tham số start_here mặc định là 0, vì vậy khi bạn bỏ qua nó, chuỗi sẽ được tìm kiếm từ đầu.

Kết quả trả về bởi hàm sẽ chỉ ra vị trí đầu tiên trong chuỗi nơi tìm thấy chuỗi another_string hoặc nơi mà ký tự any_character nằm ở đó (phụ thuộc vào biến thể nào của hàm find được gọi). Nếu tìm kiếm không thành công, cả hai biến thể đều trả về một giá trị đặc biệt được ký hiệu là string::npos.

Và bây giờ là ví dụ →

Chúng tôi nghĩ bạn hoàn toàn có thể dự đoán được chương trình sẽ chạy như thế nào. Và ban hãy thử sửa code rồi chạy lại để kiểm tra một số kết quả có thể có xảy ra. Làm như vậy bạn sẽ nhanh chóng hiểu bản chất của vấn đề hơn.