User Tools

Site Tools


cpp:streams

This is an old revision of the document!


I/O Streams

Η C++ εισάγει την έννοια του stream, ως μία ακολουθία από χαρακτήρες οι οποίοι μπορούν:

  • να εισαχθούν στο stream με συγκεκριμένη σειρά και να γραφούν σε ένα αρχείο ή σε μία σειριακή συσκευή με τη σειρά που εισήχθησαν.
  • να διαβαστούν από ένα αρχείο ή από μία σειριακή συσκευή με τη σειρά που είναι αποθηκευμένοι ή με τη σειρά που εισήχθησαν στη συσκευή.

Βασικά χαρακτηριστικά των streams είναι τα εξής:

  1. Ένα stream μεταφράζεται πάντα σε μία ακολουθία χαρακτήρων. Τα streams δίνουν ένα ενιαίο τρόπο γραφής και ανάγνωσης προς τα αντικείμενα που τα χρησιμοποιούν για οποιοδήποτε μέσο επικοινωνίας ή αποθήκευσης. Εάν μία κλάση μπορεί να γράψει σε ένα stream τότε μπορεί να γράψει σε όλα τα πιθανά streams.
  2. Τα streams δουλεύουν αυτόματα με τους βασικούς τύπους δεδομένων. Για τους αναφορικούς τύπους μπορείτε να υπερφορτώσετε τους τελεστές >> και << για είσοδο από το stream και έξοδο προς το stream αντίστοιχα. Η χρήση των τελεστών >> και << απλοποιεί εξαιρετικά τον κώδικα για να γράψουμε σε ένα stream ή να διαβάσουμε από αυτό.

Μπορείτε να σκέφτεστε τα streams ως ακολουθίες χαρακτήρων θεωρητικά άπειρου μεγέθους. Ένα stream μπορεί να είναι:

  • stream εισόδου:, μπορεί να χρησιμοποιηθεί για ανάγνωση από μία πηγή (π.χ. stdin, αρχείο, απομακρυσμένο αρχείο σε άλλο υπολογιστή)
  • stream εξόδου:, μπορεί να χρησιμοποιηθεί για εγγραφή σε ένα προορισμό (π.χ. stdout, αρχείο στο σκληρό δίσκο, απομακρυσμένο αρχείο).
  • stream εισόδου και εξόδου: Μπορεί να χρησιμοποιηθεί ταυτόχρονα και για τις δύο παραπάνω λειτουργίες.

Standard Streams

H C++ έρχεται με μία σειρά από standard streams, τα οποία είναι τα εξής:

  • std::cin: Stream για διάβασμα από το πληκτρολόγιο (stdin).
  • std::cout: Stream για γράψιμο στο stdout.
  • std::cerr: Stream για γράψιμο στο stderr. To συγκεκριμένο stream είναι unbuffered.
  • std::clog: Stream για γράψιμο στο stderr. To συγκεκριμένο stream είναι buffered.

Παράδειγμα χρήσης stream

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.1558376403.txt.gz · Last modified: 2019/05/20 17:20 (external edit)