Đầu vào / đầu ra cơ bản của C ++
Các thư viện tiêu chuẩn C ++ cung cấp một tập hợp các khả năng đầu vào / đầu ra phong phú mà chúng ta sẽ thấy trong các chương tiếp theo. Chương này sẽ thảo luận về các hoạt động I / O rất cơ bản và phổ biến nhất cần thiết cho lập trình C ++.
C ++ I / O xảy ra trong các luồng, là chuỗi các byte. Nếu các byte chuyển từ một thiết bị như bàn phím, ổ đĩa hoặc kết nối mạng, v.v. đến bộ nhớ chính, thì điều này được gọi làinput operation và nếu các byte chuyển từ bộ nhớ chính đến một thiết bị như màn hình hiển thị, máy in, ổ đĩa hoặc kết nối mạng, v.v., thì điều này được gọi là output operation.
Tệp tiêu đề thư viện I / O
Có các tệp tiêu đề sau quan trọng đối với các chương trình C ++:
Sr.No | Tệp tiêu đề & Chức năng và Mô tả |
---|---|
1 | <iostream> Tệp này xác định cin, cout, cerr và clog các đối tượng, tương ứng với luồng đầu vào tiêu chuẩn, luồng đầu ra tiêu chuẩn, luồng lỗi tiêu chuẩn không được đệm và luồng lỗi tiêu chuẩn có bộ đệm, tương ứng. |
2 | <iomanip> Tệp này khai báo các dịch vụ hữu ích để thực hiện I / O được định dạng với cái gọi là trình thao tác luồng được tham số hóa, chẳng hạn như setw và setprecision. |
3 | <fstream> Tệp này khai báo các dịch vụ xử lý tệp do người dùng kiểm soát. Chúng ta sẽ thảo luận chi tiết về nó trong chương liên quan đến Tệp và Luồng. |
Luồng đầu ra tiêu chuẩn (cout)
Đối tượng xác định trước cout là một ví dụ của ostreamlớp học. Đối tượng cout được cho là "kết nối với" thiết bị đầu ra tiêu chuẩn, thường là màn hình hiển thị. Cáccout được sử dụng cùng với toán tử chèn luồng, được viết dưới dạng << là hai dấu nhỏ hơn như thể hiện trong ví dụ sau.
#include <iostream>
using namespace std;
int main() {
char str[] = "Hello C++";
cout << "Value of str is : " << str << endl;
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Value of str is : Hello C++
Trình biên dịch C ++ cũng xác định kiểu dữ liệu của biến sẽ được xuất ra và chọn toán tử chèn luồng thích hợp để hiển thị giá trị. Toán tử << được nạp chồng để xuất ra các mục dữ liệu của các kiểu có sẵn giá trị nguyên, float, kép, chuỗi và con trỏ.
Toán tử chèn << có thể được sử dụng nhiều lần trong một câu lệnh như được hiển thị ở trên và endl được sử dụng để thêm một dòng mới vào cuối dòng.
Luồng đầu vào chuẩn (cin)
Đối tượng xác định trước cin là một ví dụ của istreamlớp học. Đối tượng cin được cho là được gắn vào thiết bị nhập tiêu chuẩn, thường là bàn phím. Cáccin được sử dụng kết hợp với toán tử trích xuất luồng, được viết là >> là hai dấu lớn hơn như thể hiện trong ví dụ sau.
#include <iostream>
using namespace std;
int main() {
char name[50];
cout << "Please enter your name: ";
cin >> name;
cout << "Your name is: " << name << endl;
}
Khi đoạn mã trên được biên dịch và thực thi, nó sẽ nhắc bạn nhập tên. Bạn nhập một giá trị rồi nhấn enter để xem kết quả sau:
Please enter your name: cplusplus
Your name is: cplusplus
Trình biên dịch C ++ cũng xác định kiểu dữ liệu của giá trị đã nhập và chọn toán tử trích dòng thích hợp để trích xuất giá trị và lưu trữ nó trong các biến đã cho.
Toán tử trích xuất luồng >> có thể được sử dụng nhiều lần trong một câu lệnh. Để yêu cầu nhiều hơn một dữ liệu, bạn có thể sử dụng như sau:
cin >> name >> age;
Điều này sẽ tương đương với hai câu lệnh sau:
cin >> name;
cin >> age;
Luồng lỗi chuẩn (cerr)
Đối tượng xác định trước cerr là một ví dụ của ostreamlớp học. Đối tượng cerr được cho là gắn vào thiết bị lỗi chuẩn, cũng là một màn hình hiển thị nhưng đối tượngcerr không được lưu vào bộ đệm và mỗi lần chèn luồng vào chứng chỉ sẽ khiến đầu ra của nó xuất hiện ngay lập tức.
Các cerr cũng được sử dụng cùng với toán tử chèn luồng như thể hiện trong ví dụ sau.
#include <iostream>
using namespace std;
int main() {
char str[] = "Unable to read....";
cerr << "Error message : " << str << endl;
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Error message : Unable to read....
Luồng nhật ký chuẩn (tắc nghẽn)
Đối tượng xác định trước clog là một ví dụ của ostreamlớp học. Đối tượng tắc nghẽn được cho là gắn vào thiết bị lỗi chuẩn, cũng là một màn hình hiển thị nhưng đối tượngclogđược đệm. Điều này có nghĩa là mỗi lần chèn để làm tắc nghẽn có thể khiến đầu ra của nó được giữ trong bộ đệm cho đến khi bộ đệm được lấp đầy hoặc cho đến khi bộ đệm được xả sạch.
Các clog cũng được sử dụng cùng với toán tử chèn luồng như thể hiện trong ví dụ sau.
#include <iostream>
using namespace std;
int main() {
char str[] = "Unable to read....";
clog << "Error message : " << str << endl;
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Error message : Unable to read....
Bạn sẽ không thể thấy bất kỳ sự khác biệt nào về cout, cerr và clog với những ví dụ nhỏ này, nhưng khi viết và thực thi các chương trình lớn, sự khác biệt trở nên rõ ràng. Vì vậy, thực hành tốt là hiển thị thông báo lỗi bằng cách sử dụng luồng cerr và trong khi hiển thị các thông báo nhật ký khác thì nên sử dụng tắc nghẽn.