Console là giao diện cơ bản của máy tính. Bàn phím
là thiết bị vào cơ bản còn màn hình là thiết
bị ra cơ bản.
Trong thư viện iostream
của C++, các thao tác vào ra cơ bản của một
chương trình được hỗ trợ bởi hai
dòng dữ liệu : cin để nhập dữ
liệu và cout để xuất. Thêm vào đó, còn có cerr và clog là
hai dòng dữ liệu dùng để hiển thị các thông
báo lỗi trên thiết bị ra chuẩn (thường là
màn hình) hoặc ra một file. Thông thường cout
được gán với màn hình còn cin
được gán với bàn phím.
Sử dụng hai dòng
dữ liệu này bạn sẽ có thể giao tiếp
với người sử dụng vì bạn có thể
hiển thị các thông báo lên màn hình cũng như nhận
dữ liệu từ bàn phím.
Xuất dữ liệu (cout)
Dòng cout
được sử dụng với toán tử đã quá
tải << (overloaded - bạn sẽ hiểu rõ hơn
về thuật ngữ này trong phần lập trình
hướng đối tượng)
cout << "Output sentence"; // Hiển thị Output sentence lên màn hình
cout << 120; // Hiển thị số 120 lên màn hình
cout << x; // Hiển thị nội dung biến x lên màn hình
Toán tử
<< được gọi là toán tử chèn vì nó chèn
dữ liệu đi sau nó vào dòng dữ liệu đứng
trước. Trong ví dụ trên nó chèn chuỗi "Output sentence", hằng số 120 và biến x vào dòng dữ
liệu ra cout.Chú ý rằng ở dòng đầu tiên chúng ta sử
dụng dấu ngoặc kép vì đó là một chuỗi kí
tự. Khi chúng ta muốn sử dụng các hằng xâu kí
tự ta phải đặt chúng trong cặp dấu
ngoặc kép để chúng có thể được phân
biệt với các biến. Ví dụ, hai lệnh sau đây
là hoàn toàn khác nhau:
cout << "Hello"; // Hiển thị Hello lên màn hình
cout << Hello; // Hiển thị nội dung của biến Hello lên màn hình
Toán tử
chèn (<<) có thể được sử dụng
nhiều lần trong một câu lệnh:
cout << "Hello, " << "I am " << "a C++ sentence";
Câu lệnh
trên sẽ in thông báo Hello, I am a C++ sentence lên màn hình. Sự tiện lợi của việc
sử dụng lặp lại toán tử chèn (<<) thể
hiện rõ khi chúng ta muốn hiển thị nhiều
biến và hằng hơn là chỉ một biến:
cout << "Hello, I am " << age << " years old and my email address is " << email_add;
Cần
phải nhấn mạnh rằng cout không nhảy
xuống dòng sau khi xuất dữ liệu, vì vậy hai câu
lệnh sau :
cout
<< "This is a sentence.";
cout << "This is another sentence.";
cout << "This is another sentence.";
sẽ
được hiển thị trên màn hình:
This is a sentence.This is another sentence.
Bởi
vậy khi muốn xuống dòng chúng ta phải sử
dụng kí tự xuống dòng, trong C++ là \n:
cout
<< "First sentence.\n ";
cout << "Second sentence.\nThird sentence.";
cout << "Second sentence.\nThird sentence.";
sẽ
viết ra màn hình như sau:
First
sentence.
Second sentence.
Third sentence.
Second sentence.
Third sentence.
Thêm vào
đó, để
xuống dòng bạn có thể sử dụng tham số
endl. Ví dụ
cout
<< "First sentence." << endl;
cout << "Second sentence." << endl;
cout << "Second sentence." << endl;
sẽ in ra
màn hình:
First
sentence.
Second sentence.
Second sentence.
Tham số endl có
một tác dụng đặc biệt khi nó được
dùng với các dòng dữ liệu sử dụng bộ
đệm: các bộ đệm sẽ được flushed
( chuyển toàn bộ thông tin từ bộ đệm ra dòng
dữ liệu). Tuy nhiên, theo mặc định cout không
sử dụng bộ đệm.
Nhập dữ liệu (cin).
Thao tác vào
chuẩn trong C++ được thực hiện bằng
cách sử dụng toán tử đã quá tải >>
với dòng cin. Theo sau toán tử này là biến sẽ lưu
trữ dữ liệu được đọc vào. Ví
dụ:
int
age;
cin >> age;
cin >> age;
khai báo
biến age có kiểu int và đợi nhập dữ liệu từ cin (bàn phím)
để lưu trữ nó trong biến kiểu nguyên này.
cin chỉ bắt đầu sử lý dữ liệu
nhập từ bàn phím sau khi phím Enter được gõ. Vì
vậy dù bạn chỉ nhập một kí tự thì cin vẫn
sẽ kiên nhẫn chờ cho đến khi bạn gõ phím
Enter.
// i/o example
#include
int main ()
{
int i;
cout << "Please enter an integer value: ";
cin >> i;
cout << "The value you entered is " << i;
cout << " and its double is " << i*2 << ".\n";
return 0;
}
|
Please enter an integer value: 702
The value you entered is 702 and its double is 1404. |
Người sử
dụng chương trình có thể là một trong những
nguyên nhân gây ra lỗi trong một chương trình
đơn giản sử dụng cin (như
chương trình trên). Trong khi bạn muốn nhận
một số nguyên thì người sử dụng lại
nhập vào tên của họ (là một xâu kí tự). Kết
quả là chương trình sẽ chạy sai vì đó không
phải là những gì mà chương trình mong đợi
từ người dùng. Bởi vậy khi bạn sử
dụng dữ liệu nhập vào từ cin bạn
phải tin chắc rằng người dùng sẽ hoàn toàn
hợp tác và rằng anh ta sẽ không nhập tên của mình
khi chương trình yêu cầu nhập số nguyên. Sau này,
khi nghiên cứu việc sử dụng các xâu kí tự chúng
ta sẽ xem xét các giải pháp khả thi để giải
quyết các lỗi loại này.
Bạn có thể dùng cin
để nhập một lúc nhiều dữ liệu từ
người dùng:
cin >> a >> b;
tương
đương với
cin >> a;
cin >> b;
cin >> b;
Trong cả
hai trường hợp người sử dụng phải
cung cấp hai dữ liệu, một cho biến a và
một cho biến b và được ngăn cách bởi một
dấu trống hợp lệ: một dấu cách, dấu
tab hay kí tự xuống dòng.
Trong
trường hợp kiểu không được chỉ rõ
(như trong ví dụ cuối) trình dịch sẽ coi nó là
kiểu int.
Tags:
Lập trình C