Hàm substr trong C++ | Laptrinhcanban.com

Hàm substr trong C++

Hướng dẫn cách sử dụng hàm substr trong C++. Bạn sẽ học được cách sử dụng hàm substr để cắt chuỗi con ra từ chuỗi string ban đầu trong C++ sau bài học này.

substr trong C++

Hàm substr là một hàm thành viên trong class std:string, có tác dụng cắt chuỗi con ra từ chuỗi string ban đầu bằng cách chỉ định vị trí và độ dài chuỗi cần cắt. Phép cắt string bằng hàm substr trong C++ không làm thay đổi chuỗi ban đầu mà sẽ lưu kết quả cắt vào một string mới.

Như các hàm khác trong class str:string thì để sử dụng hàm substr, chúng ta cần include header file string vào đầu chương trình.

Cú pháp sử dụng hàm substr để cắt string trong C++ như sau:

str.substr(start, length);

Trong đó str là chuỗi ban đầu, start là vị trí bắt đầu cắt, và length là độ dài (số ký tự) cần cắt ra. Nếu không chỉ định length thì mặc định sẽ cắt từ vị trí chỉ định cho tới cuối chuỗi string ban đầu.

Cắt string từ vị trí chỉ định tới cuối string trong C++

Khi lược bỏ đối số length thì mặc định chương trình sẽ cắt từ vị trí chúng ta chỉ định cho tơi vị trí cuối chuỗi. Ví dụ cụ thể:

Ví dụ cụ thể:

#include <iostream>
#include <string>
using namespace std;

int main() {
string str = "Hello World!";

string substr = str.substr(6);

cout << substr << endl;

return 0;
}

Kết quả, một chuỗi con được tách ra từ vị trí index bằng 6 tới cuối chuỗi ban đầu như sau:

World!

Cắt một phạm vi trong string C++

Khi chỉ định giá trị của đối số length, khi đó một phạm vi bắt đầu từ vị trí chỉ định và có độ dài băng length sẽ được cắt ra từ chuỗi string ban đầu. Ví dụ:

#include <iostream>
#include <string>
using namespace std;

int main() {
string str = "Hello World!";
string substr = str.substr(1, 3);
cout << substr << endl;

string substr2 = str.substr(1,6);
cout << substr2 << endl;
return 0;
}

Kết quả, các chuỗi string được cắt trong phạm vi chỉ định như sau:

ell
ello W

Cắt chuỗi con từ cuối lên đầu string trong C++

Hàm substr chỉ có tác dụng cắt theo chiều thuận từ đầu tới cuối chuỗi string. Và trong C++ cũng không có hàm nào có thể giúp chúng ta cắt chuỗi con từ cuối lên đầu string, nên chúng ta sẽ phải tự viết hàm để làm được điều này.

Dưới đây là một hàm mẫu ứng dụng hàm substr để thực hiện xử lý cắt từ cuối lên đầu string trong C++.

#include <iostream>
#include <string>
using namespace std;

string substrBack(string str, size_t pos, size_t len) {
//pos: vị trí cắt
//len: số ký tự cần cắt từ pos về đầu chuỗi
return str.substr(pos - len, len);
}

int main() {
string str = "Hello World!";

//Cắt từ vị trí index bằng 5 về đầu 2 ký tự
string substr3 = substrBack(str, 5, 2);
cout << substr3 << endl;

//Cắt từ vị trí index bằng 5 về đầu 5 ký tự
string substr1 = substrBack(str, 5, 5);
cout << substr1 << endl;

//Cắt từ cuối chuỗi về đầu 6 ký tự
string substr2 = substrBack(str, str.length(), 6);
cout << substr2 << endl;


return 0;
}

Kết quả:

lo
Hello
World!

Lưu ý là ở ví dụ cuối cùng, chúng ta sử dụng str.length() để thu về độ dài của chuỗi, cũng chính là vị trí đứng trước vị trí cuối cùng trong chuỗi.

Lưu ý khi cắt string trong C++ bằng hàm substr

Khi sử dụng hàm substr, chúng ta cần lưu ý phép cắt string bằng hàm substr trong C++ không làm thay đổi chuỗi ban đầu mà sẽ lưu kết quả cắt vào một string mới.

Thật vậy, chuỗi ban đầu không hề bị thay đổi sau khi bị cắt bằng hàm substr như sau:

#include <iostream>
#include <string>
using namespace std;

int main() {
string str = "Hello World!";

//Cắt và in chuỗi kết quả
string substr = str.substr(1, 3);
cout << substr << endl;

//Chuỗi ban đầu sau khi cắt
cout << str << endl;
return 0;
}

Kết quả:

ell
Hello World!

Có thể thấy rõ chuỗi str ban đầu không hề thay đối sau khi bị cắt một phạm vi từ nó.

Vậy nên nếu bạn muốn sử dụng kết quả phép cắt string nhiều lần trong chương trình, hãy luôn chuẩn bị sẵn một chuỗi string để chứa kết quả phép cắt nhé.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về hàm substr trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.