Luồng trong C ++ là gì?
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
- Dòng đầu vào: Đây là loại dòng mà các byte chảy từ một thiết bị như bàn phím đến bộ nhớ chính.
- Dòng đầu ra: Đây là loại dòng mà các byte chảy theo hướng ngược lại, tức là từ bộ nhớ chính sau đó đến thiết bị như màn hình hiển thị.
Trong hướng dẫn C ++ này, bạn sẽ học:
- Luồng trong C ++ là gì?
- Luồng hoạt động như thế nào?
- Bảng chức năng
- Tệp tiêu đề C ++ cho Đầu vào / Đầu ra
- std :: cout
- std :: cin
- std :: cerr
- std :: tắc nghẽn
- Xử lý lỗi với luồng IO:
Luồng hoạt động như thế nào?
Các luồng C ++ hoạt động như sau:
- Đầu tiên, một luồng được khởi tạo với loại phù hợp.
- Tiếp theo, bạn nên nêu rõ nơi I / O sẽ xảy ra 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 các 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 học | 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 đó |
fstreambase | Đây là lớp cơ sở cho các lớp ifstream, fstream và ofstream. Các hoạt động của nó là chung cho các luồng tệp. |
ifstream | Đó là một lớp dòng tệp đầu vào để cung cấp các hoạt động đầu vào. |
ofstream | Đó là một lớp dòng tệp đầu ra để cung cấp các hoạt động đầu ra. |
dòng chảy | Đó là một 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. |
Tệp tiêu đề C ++ cho Đầu vào / Đầu ra
C ++ cung cấp ba thư viện đi kèm với các hàm để thực hiện các tác vụ nhập / xuất cơ bản. Chúng bao gồm:
- Iostream: Đó 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: Nó là từ viết tắt của những người thao tác đầu vào / đầu ra. Thư viện đi kèm với các hàm 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, setpre precision và các đối tượng khác.
- Fstream: Đây là một 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.
Các từ khóa cin và cout rất phổ biến trong 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 bao gồm tệp tiêu đề iostream trong chương trình của mình. Lý do là chúng được định nghĩa trong tệp tiêu đề đó. Việc không bao gồm tệp tiêu đề iostream sẽ tạo ra lỗi. Điều này là do trình biên dịch C ++ không hiểu được ý nghĩa của các 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 để sản xuất đầ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 (<<).
Thí dụ:
#includeusing 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ã:
Giải thích mã:
- 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ở {đánh dấu phần đầu của phần thân của nó.
- Tạo một biến ký tự có tên là welcome để giữ chuỗi Chào mừng đến với Guru99.
- In giá trị của chuỗi chào mừng trên bảng điều khiển. Endl là một từ khóa C ++ có nghĩa là dòng kết thúc. 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.
- Cuối 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 đầu vào từ thiết bị đầu vào, bàn phím. Nó thường được sử dụng cùng với toán tử trích xuất (>>). Đối tượng trích xuất có nhiệm vụ trích xuất dữ liệu được nhập thông qua bàn phím từ đối tượng cin.
Thí dụ:
Ví dụ sau minh họa cách sử dụng từ khóa cin trong C ++:
#includeusing 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ã:
Giải thích mã:
- Đưa tệp tiêu đề iostream vào chương trình của chúng tôi. Đối tượng cin được định nghĩa 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ó.
- Phần bắt đầu của phần nội dung chương trình.
- Khai báo một biến số nguyên có tên là số.
- In thông báo trên màn hình nhắc người dùng nhập số.
- Đọc giá trị do người dùng nhập trên 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.
- Phần cuối của phần thân của hàm chính.
std :: cerr
Đối tượng cerr tạo thành dò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 là không có bộ đệm. Điều này có nghĩa là nó được sử dụng khi một thông báo lỗi sẽ được hiển thị ngay lập tức.
Vì không có bộ đệm nên nó không lưu 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 (<<).
Thí dụ:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream nơi đối tượng chứng chỉ đã đượ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 của chương trình nên được thêm vào bên trong phần thân của nó. Dấu ngoặc nhọn mở đầu đánh dấu phần bắt đầu của phần thân của 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.
- Phần cuối của phần thân của hàm chính.
std :: 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 tiêu chuẩn, màn hình. Nó tương tự như đối tượng cerr, nhưng nó được đệm. Vì nó được lưu vào bộ đệm, nó sẽ lưu thông báo lỗi trong bộ đệm cho đến khi bộ đệm được lấp đầy / xả sạch. Nó được sử dụng cùng với toán tử chèn luồng (<<).
Thí dụ:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- 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 của chương trình nên được thêm vào bên trong phần thân của nó. Dấu {đánh dấu phần bắt đầu của phần thân của 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 phần thân của hàm main ().
Xử lý lỗi với luồng IO:
Để kiểm tra xem 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 chức năng 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.
- fail () - sẽ trả về true sau khi hoạt động luồng 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ó bị lỗi hay không, hãy kiểm tra kết quả đọc.
Ví dụ: để kiểm tra xem người dùng có nhập một số nguyên hợp lệ hay không, hãy làm như sau:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Tóm lược
- Các tác vụ đầu vào và đầu ra Trong C ++ được thực hiện thông qua chuỗi byte. Các byte được gọi là luồng.
- Trong luồng đầu vào, các byte chảy từ thiết bị đầu vào như bàn phím đến bộ nhớ chính.
- Trong một luồng đầu ra, các byte từ bộ nhớ chính sau đó đến thiết bị đầu ra như màn hình.
- Đối tượng cin là một thể hiện của lớp istream. Nó đọc đầu vào từ một thiết bị đầu vào như bàn phím.
- Đối tượng cout là một thể hiện của lớp ostream. Nó tạo ra đầu ra trên các thiết bị đầu ra như màn hình.
- Đối tượng cerr là một thể hiện của lớp ostream. Nó hiển thị các đối tượng lỗi trên màn hình.
- Đối tượng clog là thể hiện của lớp ostream. Nó hiển thị thông báo lỗi trên các thiết bị đầu ra.
- Đối tượng tắc nghẽn đệm các thông báo lỗi, trong khi đối tượng cerr thì không.