Bỏ qua để đến nội dung

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.

#include <iostream>
#include <string>
int main() {
std::string name = "Alice";
std::string message("Hello");
std::cout << name << " " << message << std::endl;
return 0;
}
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ại
std::cout << full_name << std::endl; // Nguyen An!

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; // Hello
std::string s = "Hello";
std::cout << s.length() << std::endl; // 5 (hoặc s.size())
std::cout << s[0] << std::endl; // H
std::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)
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 << " ";
}
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ển
  • 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::string có 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