Trong lập trình C++, làm việc với chuỗi ký tự là một phần quan trọng và thường xuyên gặp phải. Một trong những thao tác cơ bản với chuỗi là lấy chuỗi con từ một chuỗi lớn hơn. Ngôn ngữ C++ cung cấp một phương thức hữu ích trong lớp std::string để thực hiện điều này, đó là phương thức substr()
. Hãy cùng tìm hiểu cách sử dụng phương thức substr()
để lấy chuỗi con một cách hiệu quả.
Cấu trúc của phương thức substr()
Phương thức substr()
trong C++ cho phép bạn tạo ra một chuỗi con từ một chuỗi gốc. Cú pháp của phương thức này như sau:
std::string substr (size_t pos = 0, size_t len = npos) const;
pos
: Vị trí bắt đầu của chuỗi con trong chuỗi gốc. Vị trí này được tính từ 0.len
: Độ dài của chuỗi con. Nếu không chỉ định, hoặc nếulen
lớn hơn số ký tự có sẵn tính từ vị trípos
đến cuối chuỗi, chuỗi con sẽ kéo dài tới cuối của chuỗi gốc.
Ví dụ Cụ Thể
Dưới đây là một ví dụ cụ thể sử dụng substr()
để lấy chuỗi con từ một chuỗi gốc.
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
// Lấy chuỗi con từ vị trí số 7 đến hết chuỗi
std::string subStr1 = str.substr(7);
std::cout << subStr1 << std::endl; // Output: World!
// Lấy chuỗi con từ vị trí số 0 với chiều dài 5
std::string subStr2 = str.substr(0, 5);
std::cout << subStr2 << std::endl; // Output: Hello
return 0;
}
Các Tình Huống Sử Dụng Thường Gặp
Lấy tên file từ đường dẫn
Một tình huống phổ biến là lấy tên file từ một đường dẫn đầy đủ.
#include <iostream>
#include <string>
int main() {
std::string filePath = "/user/local/bin/program.cpp";
size_t pos = filePath.find_last_of('/');
if(pos != std::string::npos) {
std::string fileName = filePath.substr(pos + 1);
std::cout << fileName << std::endl; // Output: program.cpp
}
return 0;
}
Tách phần mở rộng của tên file
Một ví dụ khác là tách phần mở rộng của tên file:
#include <iostream>
#include <string>
int main() {
std::string fileName = "document.pdf";
size_t pos = fileName.find_last_of('.');
if(pos != std::string::npos) {
std::string extension = fileName.substr(pos + 1);
std::cout << extension << std::endl; // Output: pdf
}
return 0;
}
Lưu Ý Khi Sử Dụng substr()
- Đảm bảo
pos
không vượt quá độ dài của chuỗi gốc, nếu không sẽ gây ra ngoại lệstd::out_of_range
. - Khi không cần chỉ định
len
, có thể bỏ qua đáng giá này để lấy chuỗi con từpos
đến cuối chuỗi.
Phương thức substr()
của lớp std::string
là công cụ mạnh mẽ và linh hoạt, cho phép bạn dễ dàng thao tác và xử lý chuỗi ký tự trong C++ một cách hiệu quả. Bằng việc hiểu rõ và áp dụng những nguyên tắc cơ bản của phương thức này, bạn có thể nhanh chóng giải quyết nhiều bài toán liên quan đến xử lý chuỗi trong lập trình.
Comments