Giới thiệu về STL và lớp string trong C++

Tổng quan về STL

Thư viện Mẫu Chuẩn (STL - Standard Template Library) là một phần thiết yếu của thư viện chuẩn C++. Nó cung cấp các cấu trúc dữ liệu và thuật toán tổng quát dưới dạng template. STL bao gồm bốn thành phần chính: bộ chứa (containers), bộ lặp (iterators), thuật toán (algorithms) và đối tượng hàm (function objects). Thiết kế của STL hướng đến việc tăng khả năng tái sử dụng mã và hiệu suất phát triển thông qua lập trình tổng quát, giúp tách biệt logic xử lý khỏi kiểu dữ liệu cụ thể.

Lớp string trong C++

Lớp std::string là công cụ tiêu chuẩn để thao tác chuỗi ký tự trong C++, thuộc nhóm bộ chứa tuần tự của STL. Khác với chuỗi theo phong cách C (dựa trên mảng ký tự kết thúc bằng '\0'), string tự động quản lý bộ nhớ, hỗ trợ nhiều phương thức thành viên và nạp chồng toán tử, từ đó giảm thiểu rủi ro như tràn bộ đệm. Lớp này được khai báo trong header <string> và nằm trong không gian tên std.

Các đặc điểm nổi bật của std::string

Quản lý bộ nhớ động

Đối tượng string tự động cấp phát và giải phóng bộ nhớ khi cần thiết:

std::string text = "Chào";
text += " bạn!";  // Bộ nhớ được mở rộng tự động
Hàm tạo phổ biến

Lớp string hỗ trợ nhiều cách khởi tạo:

std::string str1;                   // Chuỗi rỗng
std::string str2("Xin chào");       // Từ chuỗi C-style
std::string str3(str2);             // Sao chép từ chuỗi khác
std::string str4(6, 'x');           // Tạo chuỗi "xxxxxx"
Nạp chồng toán tử

Các toán tử được nạp chồng giúp thao tác chuỗi trở nên trực quan:

std::string first = "C++", second = "mạnh mẽ";
std::string result = first + " rất " + second;  // "C++ rất mạnh mẽ"
bool equal = (first == "C++");                  // true

Một số thao tác thường dùng

Truy cập ký tự

Có thể truy cập từng ký tự thông qua chỉ số hoặc phương thức at(). Trong khi toán tử [] không kiểm tra giới hạn, at() sẽ ném ngoại lệ nếu chỉ số vượt quá phạm vi hợp lệ:

std::string word = "Banana";
char ch1 = word[0];      // 'B'
char ch2 = word.at(5);   // 'a'

Thẻ: C++ STL std::string template library

Đăng vào ngày 29 tháng 6 lúc 18:51