---
# System prepended metadata

title: 'Nhập, xuất dữ liệu'

---

# Nhập, xuất dữ liệu
## Nhập, xuất chuẩn
Ta thường sử dụng ```cin``` để nhập dữ liệu và ```cout``` để xuất dữ liệu. Ngoài ra còn có thể dùng ```scanf``` và ```printf```.

Dữ liệu vào của chương trình thường bao gồm số và kí tự. Chúng có thể được đưa vào chương trình bằng ```cin```:
```cpp
int a, b;
string x;
cin >> a >> b >> x;
```
Dữ liệu nhập vào có thể là:  
```
123 456 monkey
```  
hoặc  
``` 
123        456
monkey
```
đều đúng.

Lệnh ```cout``` dùng để xuất dữ liệu ra ngoài màn hình:
```cpp
int a = 123, b = 456;
string x = "lion";
cout << a << " " << b << "\n" << x;
```
Dữ liệu đưa ra màn hình sẽ như sau:
```
123 456 
lion
```

Đôi lúc, nhập và xuất có thể làm cho chương trình chạy chậm. Thêm những dòng lệnh sau vào đầu đoạn code sẽ giúp nhập, xuất hiệu quả hơn:
```cpp
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
```
Lưu ý: Dù ```"\n"``` và ```endl``` đều xuống dòng dữ liệu ra nhưng ```"\n"``` sẽ nhanh hơn.

Trong một vài trường hợp, ta cần nhập dữ liệu vào là cả một dòng bao gồm cả những dấu cách. Điều đó có thể thực hiện bằng hàm ```getline```:
```cpp    
string s;
getline(cin, s);
```
## Sử dụng ```scanf``` và ```printf```
Sử dụng ```scanf``` và ```prinf``` sẽ nhanh hơn đôi chút nhưng lại khó dùng hơn.

Đoạn code sau sẽ nhận dữ liệu vào là hai số nguyên:
```cpp
int a, b;
scanf("&d &d\n", a, b);
```
Đoạn code sau sẽ in ra màn hình hai số nguyên:
```cpp    
int a, b;
printf("&d &d\n", a, b);
```
## Nhập, xuất bằng file
Trong một số cuộc thi, file được dùng cho nhập, xuất. Lúc ấy ta chỉ cần thêm hai dòng lệnh sau vào đầu đoạn code:
```cpp
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
```
Chương trình sẽ đọc dữ liệu vào từ file "input.txt" và xuất dữ liệu ra file "output.txt".