User Tools

Site Tools


cpp:streams

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
cpp:streams [2019/05/14 12:07] – created gthanoscpp:streams [2019/05/21 20:12] – [Standard Streams] gthanos
Line 1: Line 1:
 ====== I/O Streams ====== ====== I/O Streams ======
  
-Ένα //stream// είναι μία ακολουθία χαρακτήρων θεωρητικά άπειρου μεγέθους. Ένα //stream// μπορεί να χρησιμοποιηθεί για ανάγνωση από μία πηγή (π.χ. stdin, αρχείο, απομακρυσμένο αρχείο σε άλλο υπολογιστή ή το διαδίκτυο κλπ) ή για εγγραφή σε ένα προορισμό (π.χ. stdout, αρχείο στο σκληρό δίσκοαπομακρυσμένο αρχείο)+Η C++ εισάγει την έννοια του //stream//, ως μία ακολουθία από χαρακτήρες οι οποίοι μπορούν: 
 +  * να εισαχθούν στο //stream// με συγκεκριμένη σειρά και να γραφούν σε ένα αρχείο ή σε μία σειριακή συσκευή με τη σειρά που εισήχθησαν. 
 +  * να διαβαστούν από ένα αρχείο ή από μία σειριακή συσκευή με τη σειρά που είναι αποθηκευμένοι ή με τη σειρά που εισήχθησαν στη συσκευή.
  
-Ένα //stream// εισόδου (//**input stream**//) χρησιμοποιείται για ανάγνωση από μία πηγή. Η ανάγνωση γίνεται με τη βοήθεια του **extraction operator (>>)**. Αντίστοιχα, ένα //stream// εξόδου (//**output stream**//) για εγγραφή προς ένα προορισμό. Η εγγραφή πραγματοποιείται με τη βοήθεια του **insertion operator (<<)**. Εκτός των παραπάνω υπάρχουν τα //streams// εισόδου και εξόδου τα οποία έχουν τη δυνατότητα παράλληλης ανάγνωσης και εγγραφής. Τα //streams// αυτής της κατηγορίας χρησιμοποιούν και τους δύο παραπάνω τελεστές.+Βασικά χαρακτηριστικά των //streams// είναι τα εξής: 
 +  - Ένα //stream// μεταφράζεται πάντα σε μία ακολουθία χαρακτήρων. Τα //streams// δίνουν ένα ενιαίο τρόπο γραφής και ανάγνωσης προς τα αντικείμενα που τα χρησιμοποιούν για οποιοδήποτε μέσο επικοινωνίας ή αποθήκευσης. Εάν μία κλάση μπορεί να γράψει σε ένα //stream// τότε μπορεί να γράψει σε όλα τα πιθανά //streams//
 +  - Τα //streams// δουλεύουν αυτόματα με τους βασικούς τύπους δεδομένων. Για τους αναφορικούς τύπους μπορείτε να υπερφορτώσετε τους τελεστές %%>>%% και %%<<%% για είσοδο από το //stream// και έξοδο προς το //stream// αντίστοιχα. Η χρήση των τελεστών %%>>%% και %%<<%% απλοποιεί εξαιρετικά τον κώδικα για να γράψουμε σε ένα //stream// ή να διαβάσουμε από αυτό.
  
-===== Standard Streams ===== 
  
-H C++ έρχεται με μία σειρά από //standard streams//, τα οποία είναι τα εξής:+Μπορείτε να σκέφτεστε τα //streams// ως ακολουθίες χαρακτήρων θεωρητικά άπειρου μεγέθους. Ένα //stream// μπορεί να είναι: 
 +  * **//stream// εισόδου:**, μπορεί να χρησιμοποιηθεί για ανάγνωση από μία πηγή (π.χ. //stdin//, αρχείο, απομακρυσμένο αρχείο σε άλλο υπολογιστή). Τα //streams// εισόδου χρησιμοποιούν τον τελεστη ''<<'' (//stream extraction operator//) για ανάγνωση.  
 +  * **//stream// εξόδου:**, μπορεί να χρησιμοποιηθεί για εγγραφή σε ένα προορισμό (π.χ. //stdout//, αρχείο στο σκληρό δίσκο, απομακρυσμένο αρχείο). τα //streams// εξόδου χρησιμοποιούν τον τελεστη ''<<'' (//stream insertion operator//) για εγγραφή. 
 +  * **//stream// εισόδου και εξόδου:** Μπορεί να χρησιμοποιηθεί ταυτόχρονα και για τις δύο παραπάνω λειτουργίες. 
 + 
 +===== Αλληλεπίδραση με τη βασική είσοδο και έξοδο ===== 
 + 
 +H C++ έρχεται με μία σειρά από έτοιμα //streams// για αλληλεπίδραση με την κονσόλα. Τα //streams// αυτά είναι τα εξής:
   * **std::cin:** Stream για διάβασμα από το πληκτρολόγιο (//stdin//).   * **std::cin:** Stream για διάβασμα από το πληκτρολόγιο (//stdin//).
   * **std::cout:** Stream για γράψιμο στο //stdout//.   * **std::cout:** Stream για γράψιμο στο //stdout//.
Line 14: Line 24:
  
  
 +===== Παράδειγμα χρήσης διαβάσματος στο cin και γραψίματος στα cout και cerr =====
  
 +<code cpp 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;
 +}
 +</code>
cpp/streams.txt · Last modified: 2020/05/17 16:53 (external edit)