Ý tưởng cơ bản đằng sau ẩn dụ của một "dòng" là nó cung cấp hoặc tiêu thụ dữ liệu trong một single-pass thời trang: ví dụ, đối với một input stream, dữ liệu được tạo ra một cách chính xác lần. Bạn có thể yêu cầu luồng cho một số dữ liệu khác và sau khi luồng đã cung cấp cho bạn dữ liệu, nó sẽ không bao giờ cung cấp cho bạn dữ liệu đó một lần nữa.
Đây là lý do để làm bất kỳ điều gì có ý nghĩa với luồng, bạn thường rất muốn đính kèm một loại bộ đệm (một "bộ đệm luồng", nếu bạn muốn) vào một cửa hàng (thường nhỏ) lượng dữ liệu được trích xuất từ luồng trong bộ nhớ truy cập ngẫu nhiên, có thể kiểm tra và có thể xử lý được. (Có những ý tưởng tương tự, được đảo ngược cho luồng đầu ra.)
Thỉnh thoảng, việc xử lý luồng mà không có bất kỳ bộ đệm nào cũng có ý nghĩa. Ví dụ, nếu bạn có một đầu vào và một dòng đầu ra và bạn đọc số nguyên từ đầu vào và ghi giá trị tăng gấp đôi của mỗi số nguyên vào đầu ra, bạn có thể làm điều đó mà không cần đệm.
Vì vậy, khi nghĩ về phạm vi dữ liệu, luồng là những thứ bạn chỉ có thể duyệt qua một lần và không bao giờ trở lại. Nếu bạn đang suy nghĩ về tiến độ, thì luồng có thuộc tính khác, có thể là khối: luồng đầu vào có thể chặn khi không có dữ liệu và luồng đầu ra có thể chặn khi không thể chấp nhận thêm dữ liệu . Theo cách đó, từ bên trong logic chương trình, bạn có thể tưởng tượng rằng luồng đầu vào luôn luôn chứa dữ liệu cho đến khi kết thúc, nhưng chương trình dựa vào đó có thể chạy trong một khoảng thời gian đồng hồ treo tường bất thường.
Nguồn
2014-09-03 19:20:14
hơi nước có thể là bi-directional hoặc uni-directional. đó là tất cả –
xem tổng quan về các lớp học trực tuyến tại đây: http://www.cplusplus.com/reference/iolibrary/ – BeyelerStudios