Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
cpp:streams [2019/05/20 18:20] – [I/O Streams] gthanos | cpp:streams [2020/05/17 17:41] – gthanos |
---|
| |
Βασικά χαρακτηριστικά των //streams// είναι τα εξής: | Βασικά χαρακτηριστικά των //streams// είναι τα εξής: |
- Ένα //stream// μεταφράζεται πάντα σε μία ακολουθία χαρακτήρων. Τα //streams// δίνουν ένα ενιαίο τρόπο γραφής και ανάγνωσης προς τα αντικείμενα που τα χρησιμοποιούν για οποιοδήποτε μέσο επικοινωνίας ή αποθήκευσης. Εάν μία κλάση μπορεί να γράψει σε ένα //stream// τότε μπορεί να γράψει σε όλα τα πιθανά //streams//. | - Ένα //stream// μεταφράζεται πάντα σε μία ακολουθία χαρακτήρων. Τα //streams// παρέχουν ένα ενιαίο τρόπο γραφής και ανάγνωσης προς τα αντικείμενα που τα χρησιμοποιούν ανεξάρτητα από το μέσο επικοινωνίας ή αποθήκευσης. Εάν μία κλάση μπορεί να γράψει σε ένα //stream// τότε μπορεί να γράψει σε όλα τα πιθανά //streams//. |
- Τα //streams// δουλεύουν αυτόματα με τους βασικούς τύπους δεδομένων. Για τους αναφορικούς τύπους μπορείτε να υπερφορτώσετε τους τελεστές %%>>%% και %%<<%% για είσοδο από το //stream// και έξοδο προς το //stream// αντίστοιχα. Η χρήση των τελεστών %%>>%% και %%<<%% απλοποιεί εξαιρετικά τον κώδικα για να γράψουμε σε ένα //stream// ή να διαβάσουμε από αυτό. | - Τα //streams// δουλεύουν αυτόματα με τους βασικούς τύπους δεδομένων. Για τους αναφορικούς τύπους μπορείτε να υπερφορτώσετε τους τελεστές %%>>%% και %%<<%% για είσοδο από το //stream// και έξοδο προς το //stream// αντίστοιχα. Η χρήση των τελεστών %%>>%% και %%<<%% απλοποιεί εξαιρετικά τον κώδικα για να γράψουμε σε ένα //stream// ή να διαβάσουμε από αυτό. |
| |
| |
Μπορείτε να σκέφτεστε τα //streams// ως ακολουθίες χαρακτήρων θεωρητικά άπειρου μεγέθους. Ένα //stream// μπορεί να είναι: | Μπορείτε να σκέφτεστε τα //streams// ως ακολουθίες χαρακτήρων θεωρητικά άπειρου μεγέθους. Ένα //stream// μπορεί να είναι: |
* **//stream// εισόδου:**, μπορεί να χρησιμοποιηθεί για ανάγνωση από μία πηγή (π.χ. //stdin//, αρχείο, απομακρυσμένο αρχείο σε άλλο υπολογιστή) | * **//stream// εισόδου:**, μπορεί να χρησιμοποιηθεί για ανάγνωση από μία πηγή (π.χ. //stdin//, αρχείο, απομακρυσμένο αρχείο σε άλλο υπολογιστή). Τα //streams// εισόδου χρησιμοποιούν τον τελεστη ''<<'' (//stream extraction operator//) για ανάγνωση. |
* **//stream// εξόδου:**, μπορεί να χρησιμοποιηθεί για εγγραφή σε ένα προορισμό (π.χ. //stdout//, αρχείο στο σκληρό δίσκο, απομακρυσμένο αρχείο). | * **//stream// εξόδου:**, μπορεί να χρησιμοποιηθεί για εγγραφή σε ένα προορισμό (π.χ. //stdout//, αρχείο στο σκληρό δίσκο, απομακρυσμένο αρχείο). τα //streams// εξόδου χρησιμοποιούν τον τελεστη ''<<'' (//stream insertion operator//) για εγγραφή. |
* **//stream// εισόδου και εξόδου:** Μπορεί να χρησιμοποιηθεί ταυτόχρονα και για τις δύο παραπάνω λειτουργίες. | * **//stream// εισόδου και εξόδου:** Μπορεί να χρησιμοποιηθεί ταυτόχρονα και για τις δύο παραπάνω λειτουργίες. |
| |
===== Standard Streams ===== | Στην παρακάτω εικόνα δίνεται η βασική διάρθρωση των //streams// της C++, όπου φαίνονται και οι μεταξύ τους σχέσεις κληρονομικότητας. Κάτω από το όνομα κάθε κλάσης αναφέρεται το όνομα του αρχείου στο οποιό δηλώνεται το //prototype// της |
| |
H C++ έρχεται με μία σειρά από //standard streams//, τα οποία είναι τα εξής: | {{ :cpp:cpp_io_library.png |}} |
| ===== Αλληλεπίδραση με τη βασική είσοδο και έξοδο ===== |
| |
| H C++ έρχεται με μία σειρά από έτοιμα //streams// για αλληλεπίδραση με την κονσόλα. Τα //streams// αυτά είναι τα εξής: |
* **std::cin:** Stream για διάβασμα από το πληκτρολόγιο (//stdin//). | * **std::cin:** Stream για διάβασμα από το πληκτρολόγιο (//stdin//). |
* **std::cout:** Stream για γράψιμο στο //stdout//. | * **std::cout:** Stream για γράψιμο στο //stdout//. |
| |
| |
===== Παράδειγμα χρήσης stream ===== | ===== Παράδειγμα χρήσης διαβάσματος στο cin και γραψίματος στα cout και cerr ===== |
| |
<code cpp ReadHeight.cpp> | <code cpp ReadHeight.cpp> |