cpp:streams
This is an old revision of the document!
Table of Contents
I/O Streams
Η C++ εισάγει την έννοια του stream, ως μία ακολουθία από χαρακτήρες οι οποίοι μπορούν:
- να εισαχθούν στο stream με συγκεκριμένη σειρά και να γραφούν σε ένα αρχείο ή σε μία σειριακή συσκευή με τη σειρά που εισήχθησαν.
- να διαβαστούν από ένα αρχείο ή από μία σειριακή συσκευή με τη σειρά που είναι αποθηκευμένοι ή με τη σειρά που εισήχθησαν στη συσκευή.
Βασικά χαρακτηριστικά των streams είναι τα εξής:
- Ένα stream μεταφράζεται πάντα σε μία ακολουθία χαρακτήρων. Τα streams δίνουν ένα ενιαίο τρόπο γραφής και ανάγνωσης προς τα αντικείμενα που τα χρησιμοποιούν για οποιοδήποτε μέσο επικοινωνίας ή αποθήκευσης. Εάν μία κλάση μπορεί να γράψει σε ένα stream τότε μπορεί να γράψει σε όλα τα πιθανά streams.
- Τα streams δουλεύουν αυτόματα με τους βασικούς τύπους δεδομένων. Για τους αναφορικούς τύπους μπορείτε να υπερφορτώσετε τους τελεστές >> και << για είσοδο από το stream και έξοδο προς το stream αντίστοιχα. Η χρήση των τελεστών >> και << απλοποιεί εξαιρετικά τον κώδικα για να γράψουμε σε ένα stream ή να διαβάσουμε από αυτό.
Μπορείτε να σκέφτεστε τα streams ως ακολουθίες χαρακτήρων θεωρητικά άπειρου μεγέθους. Ένα stream μπορεί να είναι:
- stream εισόδου:, μπορεί να χρησιμοποιηθεί για ανάγνωση από μία πηγή (π.χ. stdin, αρχείο, απομακρυσμένο αρχείο σε άλλο υπολογιστή). Τα streams εισόδου χρησιμοποιούν τον τελεστη
«
(stream extraction operator) για ανάγνωση. - stream εξόδου:, μπορεί να χρησιμοποιηθεί για εγγραφή σε ένα προορισμό (π.χ. stdout, αρχείο στο σκληρό δίσκο, απομακρυσμένο αρχείο). τα streams εξόδου χρησιμοποιούν τον τελεστη
«
(stream insertion operator) για εγγραφή. - stream εισόδου και εξόδου: Μπορεί να χρησιμοποιηθεί ταυτόχρονα και για τις δύο παραπάνω λειτουργίες.
Αλληλεπίδραση με τη βασική είσοδο και έξοδο
H C++ έρχεται με μία σειρά από έτοιμα streams για αλληλεπίδραση με την κονσόλα. Τα streams αυτά είναι τα εξής:
- std::cin: Stream για διάβασμα από το πληκτρολόγιο (stdin).
- std::cout: Stream για γράψιμο στο stdout.
- std::cerr: Stream για γράψιμο στο stderr. To συγκεκριμένο stream είναι unbuffered.
- std::clog: Stream για γράψιμο στο stderr. To συγκεκριμένο stream είναι buffered.
Παράδειγμα χρήσης διαβάσματος στο cin και γραψίματος στα cout και cerr
- ReadHeight.cpp
#include <iostream> using namespace std; int main() { double height; do { cout << "Enter your height (in meters): "; cin >> height; if(height > 0) break; cerr << "Invalid height. Try again..." << endl; } while(true); cout << "You height is: " << height << " meters." << endl; }
cpp/streams.1558469541.txt.gz · Last modified: 2019/05/21 19:12 (external edit)