Kiểu dữ liệu chuỗi (std::string)
std::string là kiểu chuỗi hiện đại, an toàn của C++, nằm trong thư viện <string>. Nội dung của một std::string có thể thay đổi được (mutable) sau khi tạo.
Khai báo chuỗi
Phần tiêu đề “Khai báo chuỗi”#include <iostream>#include <string>
int main() { std::string name = "Alice"; std::string message("Hello");
std::cout << name << " " << message << std::endl; return 0;}Nối chuỗi (Concatenation)
Phần tiêu đề “Nối chuỗi (Concatenation)”std::string first_name = "Nguyen";std::string last_name = "An";std::string full_name = first_name + " " + last_name;std::cout << full_name << std::endl; // Nguyen An
full_name += "!"; // Nối thêm và gán lạistd::cout << full_name << std::endl; // Nguyen An!std::string có thể thay đổi (mutable)
Phần tiêu đề “std::string có thể thay đổi (mutable)”Bạn có thể sửa trực tiếp từng ký tự trong std::string thông qua chỉ số:
std::string s = "hello";s[0] = 'H';std::cout << s << std::endl; // HelloTruy cập ký tự và độ dài
Phần tiêu đề “Truy cập ký tự và độ dài”std::string s = "Hello";std::cout << s.length() << std::endl; // 5 (hoặc s.size())std::cout << s[0] << std::endl; // Hstd::cout << s.at(1) << std::endl; // e (an toàn hơn s[1] - báo lỗi nếu ra ngoài phạm vi)Duyệt qua chuỗi
Phần tiêu đề “Duyệt qua chuỗi”std::string word = "Cat";
// Cách 1: dùng chỉ sốfor (size_t i = 0; i < word.length(); i++) { std::cout << word[i] << " ";}
// Cách 2: range-based for - duyệt trực tiếp từng ký tựfor (char c : word) { std::cout << c << " ";}So sánh chuỗi
Phần tiêu đề “So sánh chuỗi”std::string a = "apple";std::string b = "banana";
std::cout << (a == b) << std::endl; // 0 (false)std::cout << (a < b) << std::endl; // 1 (true) - so sánh theo thứ tự từ điểnTổng kết
Phần tiêu đề “Tổng kết”std::string(từ<string>) là kiểu chuỗi hiện đại, khuyến nghị dùng thay vì chuỗi C-style (char[])std::stringcó thể thay đổi từng ký tự sau khi tạo.length()/.size()lấy độ dài,[]hoặc.at()truy cập ký tự theo chỉ số- Có thể duyệt qua chuỗi bằng vòng lặp chỉ số hoặc range-based for