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
- 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). - Toán tử
<<
không thay đổi nội dung của chuỗi std::string được ghi ra. - 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;
. - 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.
- 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. - 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 |