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>.
Xuất dữ liệu với std::cout
Phần tiêu đề “Xuất dữ liệu với std::cout”#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::endlxuố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)
Nhập dữ liệu với std::cin
Phần tiêu đề “Nhập dữ liệu với std::cin”#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;}Lỗi thường gặp: trộn cin >> và getline
Phần tiêu đề “Lỗi thường gặp: trộn cin >> và getline”int age;std::string name;
std::cin >> age; // Đọc số, nhưng để lại ký tự '\n' trong bufferstd::cin.ignore(); // Bỏ qua ký tự '\n' còn sót lạistd::getline(std::cin, name); // Nếu không ignore(), dòng này sẽ đọc chuỗi rỗng!Nhập nhiều giá trị cùng lúc
Phần tiêu đề “Nhập nhiều giá trị cùng lúc”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 Enterstd::cout << a + b + c << std::endl;Tổng kết
Phần tiêu đề “Tổng kết”std::cout << ... << std::endl;để xuất dữ liệu,std::cin >> ...;để nhập dữ liệustd::cin >>dừng đọc tại khoảng trắng/xuống dòng đầu tiên - dùngstd::getline()để đọc cả một dòng- Khi trộn
cin >>vàgetline(), cần gọistd::cin.ignore()để tránh đọc nhầm chuỗi rỗng