Chuyển tới nội dung chính

Toán tử <<

#include <string>

// Non-member function
std::ostream& operator<<( std::ostream& os, const std::string& str );

Ghi (write) hoặc đưa (insert) nội dung của một chuỗi std::string vào một luồng đầu ra (output stream, ví dụ: std::cout, std::ofstream, std::stringstream).

Tham số

os

  • Tham chiếu đến luồng đầu ra (output stream) mà dữ liệu sẽ được ghi vào (ví dụ: std::cout).

str

  • Tham chiếu hằng (const reference) đến đối tượng std::string có nội dung cần được ghi ra luồng đầu ra.

Giá trị trả về

std::ostream&

  • Tham chiếu đến luồng đầu ra (os).

Đặc điểm

  1. Toán tử << cho std::string là một hàm non-member (không phải là hàm thành viên của lớp std::string).
  2. Toán tử << không thay đổi nội dung của chuỗi std::string được ghi ra.
  3. Toán tử << trả về tham chiếu đến luồng đầu ra, cho phép bạn thực hiện chuỗi các phép ghi, ví dụ: std::cout << "Giá trị x: " << x << ", giá trị y: " << y << std::endl;.
  4. Bạn cần kiểm tra trạng thái của luồng đầu ra (ví dụ: kiểm tra xem file có mở thành công không) để đảm bảo rằng việc ghi dữ liệu thành công.
  5. Toán tử << sẽ ghi ra nội dung của chuỗi, không phải địa chỉ của đối tượng string.
  6. Toán tử << thường được sử dụng để:
    • In nội dung của chuỗi std::string ra màn hình console (std::cout).
    • Ghi nội dung của chuỗi vào file (sử dụng std::ofstream).
    • Ghi nội dung của chuỗi vào các luồng đầu ra khác (ví dụ: std::stringstream).
    • Kết hợp với các toán tử << khác để in ra nhiều giá trị trên cùng một dòng.
Phân biệt với các hàm khác
  • Toán tử << được sử dụng với các luồng đầu ra (output streams). Không có hàm thành viên của std::string nào có chức năng tương tự.
  • std::string có nhiều hàm thành viên khác để lấy dữ liệu từ chuỗi (ví dụ: c_str(), data(), substr()), nhưng chúng không liên quan trực tiếp đến việc đưa chuỗi ra luồng đầu ra.

Ví dụ

#include <iostream>
#include <string>
#include <fstream> // Để sử dụng ofstream

int main() {
std::string str = "Hello, world!";

// In chuỗi ra màn hình console
std::cout << "Chuỗi: " << str << std::endl;

// Ghi chuỗi vào file
std::ofstream outfile("output.txt");
if (outfile.is_open()) {
outfile << str << std::endl;
outfile.close();
} else {
std::cerr << "Không thể mở file để ghi!\n";
}

return 0;
}

Các hàm liên quan

Toán tử >>Đọc dữ liệu từ một luồng đầu vào và lưu trữ nó vào một đối tượng std::string