C++ IOStreams là vô lý không hiệu quả (trong hầu hết các triển khai mà tôi biết). Thông thường, đó không phải là một mối quan tâm, nhưng khi, thư viện cơ bản là vô ích. Nó cũng là một điểm tốt mà cú pháp là unintuitive (và rất, rất tiết). Thư viện phức tạp và không cần thiết để mở rộng. Nó cũng không linh hoạt lắm. Khi đối chiếu với một thứ gì đó giống như STL, IOStreams thực sự trông giống như một giấc mơ xấu. Nhưng nó ở đây, và chúng tôi đang mắc kẹt với nó.
Lý do ở đây và lý do có vẻ như nó đã được phát triển trước đó, trước khi C++ là ngôn ngữ trưởng thành. Trước khi chúng tôi có nhiều thập kỷ kinh nghiệm cho chúng tôi biết thiết kế thư viện tốt là gì. Trước khi bất cứ ai thực sự biết những gì các tùy chọn được.
C++ cần thư viện I/O là tốt hơn so với C. Và trong một số cách quan trọng, C++ IOStreams là tốt hơn là. Họ là loại an toàn và mở rộng như những người khác đã đề cập. Bằng cách thực hiện một toán tử đơn, tôi có thể in ra một lớp do người dùng định nghĩa. Điều đó không thể thực hiện được với printf
. Tôi cũng không phải lo lắng về việc nhận định dạng sai và in ra rác vì thiếu an toàn kiểu.
Những thứ đó cần để được sửa. Và hey, trong những ngày đầu, chức năng ảo và quá tải của nhà điều hành là shit. Trông nó thật tuyệt.Tất nhiên các thư viện muốn sử dụng các tính năng đó.
Thư viện IOStream là một thỏa hiệp giữa:
- một cái gì đó an toàn hơn và mở rộng hơn C
stdio.h
- cái gì hiệu quả
- một cái gì đó được thiết kế tốt và trực quan
- một thư viện mà thực sự tồn tại thời điểm C++ đã được chuẩn hóa. (Họ đã có thêm một cái gì đó , vì vậy họ đã phải lựa chọn giữa các ứng cử viên thực sự tồn tại vào thời điểm đó.)
Thư viện không đạt được tất cả trong số này, và tôi tin rằng ngày hôm nay, với nhiều thập kỷ của chúng tôi kinh nghiệm với ngôn ngữ, chúng tôi có thể thiết kế một thư viện tốt hơn nhiều. Nhưng trở lại vào giữa những năm 90, khi họ đang tìm kiếm một thư viện I/O để thêm vào, đây là điều tốt nhất mà họ có thể tìm thấy.
Hiệu quả không thực sự là một mối quan tâm, vì 99% thời gian sẽ được chi tiêu trong cùng một cuộc gọi hệ điều hành để in ra bàn điều khiển –
Tóm tắt chuỗi nào? –
-1 hey boy, tôi cho rằng bạn là người mới bắt đầu trong thế giới C++. Làm sao bạn có thể nói rằng nó kém hiệu quả hơn, nếu bạn không biết? Trước khi được phê bình, xin vui lòng, tìm hiểu, và được khiêm tốn. –