C++ Đầu vào/đầu ra cơ bản: Ví dụ về Cout, Cin, Cerr
⚡ Tóm tắt thông minh
C++ Các thao tác nhập và xuất dữ liệu dựa trên các đối tượng luồng, di chuyển dữ liệu dưới dạng chuỗi byte giữa các chương trình và thiết bị, trong đó cin đọc dữ liệu nhập từ bàn phím, còn cout, cerr và clog ghi dữ liệu ra màn hình.
Luồng trong là gì C++?
C++ cung cấp cho người dùng một số thư viện mà họ có thể sử dụng để thực hiện các tác vụ đầu vào/đầu ra. Các tác vụ này được thực hiện dưới dạng chuỗi byte, thường được gọi là luồng.
Các luồng được chia thành hai:
Các loại luồng
- Luồng đầu vào: Đây là một loại luồng trong đó các byte truyền từ một thiết bị như bàn phím đến bộ nhớ chính.
- Luồng đầu ra: Đây là loại luồng trong đó các byte chảy theo hướng ngược lại, tức là từ bộ nhớ chính đến thiết bị như màn hình hiển thị.
Các luồng hoạt động như thế nào?
C++ luồng hoạt động như sau:
- Đầu tiên, một luồng được khởi tạo với đúng loại.
- Tiếp theo, bạn nên chỉ rõ vị trí xảy ra thao tác I/O bằng cách sử dụng con trỏ get/put.
- Sau khi đến đúng vị trí trong luồng, bạn có thể thực hiện các tác vụ đầu vào và đầu ra bằng cách sử dụng toán tử >> và << tương ứng.
Bảng chức năng
Sau đây là các chức năng được cung cấp trong tệp tiêu đề stream.h:
| Lớp | Chức năng |
|---|---|
| Filebuf | Nó thiết lập bộ đệm tệp để đọc/ghi. Nó có các hàm close() và open() trong đó |
| cơ sở dữ liệu | Đây là lớp cơ sở cho các lớp ifstream, fstream và ofstream. Hoạt động của nó là phổ biến đối với các luồng tập tin. |
| nếu dòng | Đây là lớp luồng tệp đầu vào để cung cấp các hoạt động đầu vào. |
| ngoài dòng | Đây là lớp luồng tệp đầu ra để cung cấp các hoạt động đầu ra. |
| dòng chảy | Đây là lớp luồng đầu vào/đầu ra. Nó hỗ trợ các hoạt động đầu vào/đầu ra đồng thời. |
C++ Tệp tiêu đề cho Đầu vào/Đầu ra
C++ cung cấp ba thư viện đi kèm với các chức năng để thực hiện các tác vụ nhập/xuất cơ bản. Chúng bao gồm:
- Dòng chảy: Đó là từ viết tắt của luồng đầu vào/đầu ra tiêu chuẩn. Tệp tiêu đề này đi kèm với các định nghĩa cho các đối tượng như cin/ cout/cerr.
- Iomanip: Đó là từ viết tắt của bộ điều khiển đầu vào/đầu ra. Thư viện đi kèm với các chức năng có thể được sử dụng để thao tác với các luồng. Nó chứa các định nghĩa cho các đối tượng như setw, setprecision và các đối tượng khác.
- Dòng chảy: Đây là tệp tiêu đề để mô tả luồng tệp. Nó xử lý dữ liệu được đọc từ tệp dưới dạng đầu vào hoặc được ghi vào tệp, đầu ra.
Từ khóa cin và cout rất phổ biến ở C++. Chúng được sử dụng để lấy đầu vào và đầu ra in tương ứng. Để sử dụng chúng, bạn phải đưa tệp tiêu đề iostream vào chương trình của mình. Lý do là chúng được xác định trong tệp tiêu đề đó. Việc không bao gồm tệp tiêu đề iostream sẽ gây ra lỗi. Điều này là kết quả của sự thất bại của C++ trình biên dịch để hiểu ý nghĩa của từ khóa.
Các đối tượng chính được xác định trong tệp tiêu đề iostream là cin, cout, cerr và clog. Hãy thảo luận về chúng.
std :: cout
Đối tượng cout là một thể hiện của lớp iostream. Nó được sử dụng để tạo đầu ra trên thiết bị đầu ra tiêu chuẩn, thường là màn hình. Nó được sử dụng cùng với toán tử chèn luồng (<<).
Ví dụ
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Code Giải thích:
- Bao gồm tệp tiêu đề iostream nơi đối tượng cout được xác định.
- Bao gồm không gian tên std để chúng ta không phải gọi nó khi sử dụng các lớp của nó.
- Gọi hàm main(). Mã chương trình phải được thêm vào trong phần thân của nó. Dấu ngoặc nhọn mở đầu { đánh dấu sự bắt đầu của phần thân.
- Tạo một biến ký tự có tên là welcome để lưu trữ chuỗi "Welcome to" Guru99.
- In giá trị của chuỗi chào mừng trên bảng điều khiển. Cuối cùng là một C++ từ khóa có nghĩa là dòng cuối cùng. Nó di chuyển con trỏ để bắt đầu in văn bản trên dòng tiếp theo.
- Chương trình phải trả về giá trị khi thực hiện thành công.
- Kết thúc phần thân của hàm main().
std::cin
Đối tượng cin là một thể hiện của lớp istream. Nó đọc dữ liệu đầu vào từ thiết bị nhập liệu, bàn phím. Nó thường được sử dụng cùng với extractoán tử − (>>). Ví dụtracĐối tượng tion chịu trách nhiệm cho extracDữ liệu được nhập qua bàn phím từ đối tượng cin.
Ví dụ
Ví dụ sau đây minh họa cách sử dụng từ khóa cin trong C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Code Giải thích:
- Đưa tệp tiêu đề iostream vào chương trình của chúng tôi. Đối tượng cin được xác định trong tệp tiêu đề này.
- Bao gồm không gian tên std để sử dụng các lớp của nó. Bạn sẽ không phải gọi std khi sử dụng các lớp của nó.
- Gọi hàm main(). Mã chương trình phải được thêm vào trong phần thân của nó.
- Sự bắt đầu của phần thân của chương trình.
- Khai báo một biến số nguyên số có tên.
- In thông báo lên màn hình nhắc người dùng nhập số.
- Đọc giá trị do người dùng nhập vào bảng điều khiển từ bàn phím.
- In giá trị đọc ở trên trên bảng điều khiển cùng với văn bản khác.
- Chương trình sẽ trả về một giá trị nếu nó thực thi thành công.
- Kết thúc phần thân của hàm chính.
std::cerr
Đối tượng cerr tạo ra luồng lỗi tiêu chuẩn để xuất ra các lỗi trong C++. Cerr là một thể hiện của lớp ostream. Đối tượng cerr không được đệm. Điều này có nghĩa là nó được sử dụng khi thông báo lỗi cần được hiển thị ngay lập tức.
Vì nó không được đệm nên nó không lưu trữ thông báo lỗi để hiển thị sau. Nó được sử dụng cùng với toán tử chèn luồng (<<).
Ví dụ
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Code Giải thích:
- Bao gồm tệp tiêu đề iostream trong đó đối tượng cerr đã được xác định.
- Bao gồm không gian tên std để chúng ta không phải gọi nó khi sử dụng các lớp của nó.
- Gọi hàm main(). Logic chương trình nên được thêm vào trong phần thân của nó. Dấu ngoặc nhọn mở đầu đánh dấu sự bắt đầu của phần thân hàm.
- Sử dụng đối tượng cerr để in lỗi trên bảng điều khiển.
- Chương trình phải trả về một giá trị khi thực hiện thành công.
- Kết thúc phần thân của hàm chính.
std::làm tắc nghẽn
Đối tượng clog là một thể hiện của lớp ostream. Nó được sử dụng để hiển thị lỗi trên màn hình chuẩn, màn hình. Nó tương tự như đối tượng cerr, nhưng nó được đệm. Vì nó được đệm, nó lưu trữ thông báo lỗi trong bộ đệm cho đến khi bộ đệm được lấp đầy/xóa. Nó được sử dụng cùng với toán tử chèn luồng (<<).
Ví dụ
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Code Giải thích:
- Bao gồm tệp tiêu đề iostream trong đó đối tượng tắc nghẽn được xác định.
- Bao gồm không gian tên std để chúng ta có thể sử dụng các lớp của nó mà không cần gọi nó.
- Gọi hàm main(). Logic chương trình nên được thêm vào trong phần thân của nó. { đánh dấu sự bắt đầu của phần thân hàm.
- Sử dụng đối tượng tắc nghẽn để in lỗi trên đầu ra tiêu chuẩn, màn hình.
- Chương trình phải trả về một giá trị sau khi hoàn thành thành công.
- Phần cuối của hàm main().
Xử lý lỗi với luồng IO
Các đối tượng luồng tương tự cũng báo cáo liệu một thao tác có thành công hay không, điều mà việc kiểm tra trạng thái luồng cho biết.
Để kiểm tra xem một luồng có hợp lệ hay không, bạn có thể sử dụng luồng đó làm Boolean.
Đây là một ví dụ:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
Để biết thêm chi tiết về trạng thái luồng, bạn có thể sử dụng các hàm sau:
- good()- sẽ trả về true nếu tất cả đều ổn.
- bad()- sẽ trả về true nếu xảy ra lỗi nghiêm trọng.
- failed()- sẽ trả về true sau hoạt động truyền phát không thành công.
- eof()- sẽ trả về true nếu nó đến cuối tệp.
Để biết liệu một thao tác đọc/ghi cụ thể có thất bại hay không, hãy kiểm tra kết quả đọc.
Ví dụ: để kiểm tra xem người dùng đã nhập số nguyên hợp lệ hay chưa, hãy thực hiện việc này:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }





