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

Nhập/xuất dữ liệu với cin/cout

C++ dùng std::cin để nhập dữ liệu và std::cout để xuất dữ liệu, thông qua thư viện <iostream>.

#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
int age = 20;
std::cout << "Tuoi: " << age << std::endl; // Nối nhiều giá trị bằng <<
std::cout << "a" << "b" << "c" << std::endl; // In liên tiếp: abc
return 0;
}
  • << là toán tử “chèn vào luồng xuất” (stream insertion)
  • std::endl xuống dòng và “xả” (flush) bộ đệm xuất; có thể dùng "\n" để chỉ xuống dòng (nhanh hơn một chút vì không flush)
#include <iostream>
#include <string>
int main() {
int age;
std::cout << "Nhap tuoi: ";
std::cin >> age;
std::cout << "Ban " << age << " tuoi" << std::endl;
std::string name;
std::cout << "Nhap ten: ";
std::cin >> name; // Chỉ đọc đến khi gặp khoảng trắng!
std::cout << "Xin chao " << name << std::endl;
return 0;
}

>> là toán tử “trích ra từ luồng nhập” (stream extraction).

Cạm bẫy: std::cin >> chỉ đọc đến khoảng trắng

Phần tiêu đề “Cạm bẫy: std::cin >> chỉ đọc đến khoảng trắng”

Nếu muốn đọc cả một dòng (bao gồm khoảng trắng), dùng std::getline:

#include <iostream>
#include <string>
int main() {
std::string full_name;
std::cout << "Nhap ho ten: ";
std::getline(std::cin, full_name); // Đọc cả dòng, kể cả khoảng trắng
std::cout << "Xin chao " << full_name << std::endl;
return 0;
}
int age;
std::string name;
std::cin >> age; // Đọc số, nhưng để lại ký tự '\n' trong buffer
std::cin.ignore(); // Bỏ qua ký tự '\n' còn sót lại
std::getline(std::cin, name); // Nếu không ignore(), dòng này sẽ đọc chuỗi rỗng!
int a, b, c;
std::cout << "Nhap 3 so: ";
std::cin >> a >> b >> c; // Nhập 3 số, cách nhau bởi khoảng trắng hoặc Enter
std::cout << a + b + c << std::endl;
  • std::cout << ... << std::endl; để xuất dữ liệu, std::cin >> ...; để nhập dữ liệu
  • std::cin >> dừng đọc tại khoảng trắng/xuống dòng đầu tiên - dùng std::getline() để đọc cả một dòng
  • Khi trộn cin >>getline(), cần gọi std::cin.ignore() để tránh đọc nhầm chuỗi rỗng