Download - C++ IO Tutorial
![Page 2: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/2.jpg)
Streams – What?
➢ Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των “ρευμάτων” - streams
➢ Ένα ρεύμα είναι ουσιαστικά μια ακολουθία χαρακτήρων (γενικότερα bytes)
➢ Ένα ρεύμα μπορεί να είναι για είσοδο, για έξοδο ή και για τα δύο
![Page 3: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/3.jpg)
Streams – What?
➢ Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των “ρευμάτων” - streams
➢ Ένα ρεύμα είναι ουσιαστικά μια ακολουθία χαρακτήρων (γενικότερα bytes)
➢ Ένα ρεύμα μπορεί να είναι για είσοδο, για έξοδο ή και για τα δύο
![Page 4: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/4.jpg)
Streams – What?
➢ Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των “ρευμάτων” - streams
➢ Ένα ρεύμα είναι ουσιαστικά μια ακολουθία χαρακτήρων (γενικότερα bytes)
➢ Ένα ρεύμα μπορεί να είναι για είσοδο, για έξοδο ή και για τα δύο
![Page 5: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/5.jpg)
Streams – Why?
➢ Η έννοια του ρεύματος ταιριάζει αρκετά με την αντικειμενοστρεφή προσέγγιση
➢ Ένα επίπεδο αφαίρεσης
➢ Η είσοδος και η έξοδος αντιμετωπίζονται σαν οντότητες από τις οποίες διαβάζουμε ή γράφουμε δεδομένα
![Page 6: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/6.jpg)
Streams – Why?
➢ Η έννοια του ρεύματος ταιριάζει αρκετά με την αντικειμενοστρεφή προσέγγιση
➢ Ένα επίπεδο αφαίρεσης
➢ Η είσοδος και η έξοδος αντιμετωπίζονται σαν οντότητες από τις οποίες διαβάζουμε ή γράφουμε δεδομένα
![Page 7: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/7.jpg)
Streams – Why?
➢ Η έννοια του ρεύματος ταιριάζει αρκετά με την αντικειμενοστρεφή προσέγγιση
➢ Ένα επίπεδο αφαίρεσης
➢ Η είσοδος και η έξοδος αντιμετωπίζονται σαν οντότητες από τις οποίες διαβάζουμε ή γράφουμε δεδομένα
![Page 8: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/8.jpg)
Streams – How?
➢ Η C++ προσφέρει ρεύματα συσχετισμένα με:
➢ Την standard είσοδο / έξοδο
➢ Αρχεία
➢ Συμβολοσειρές
![Page 9: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/9.jpg)
Streams – How?
➢ Η C++ προσφέρει ρεύματα συσχετισμένα με:
➢ Την standard είσοδο / έξοδο
➢ Αρχεία
➢ Συμβολοσειρές
![Page 10: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/10.jpg)
Streams – How?
➢ Η C++ προσφέρει ρεύματα συσχετισμένα με:
➢ Την standard είσοδο / έξοδο
➢ Αρχεία
➢ Συμβολοσειρές
![Page 11: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/11.jpg)
Streams – How?
➢ Η C++ προσφέρει ρεύματα συσχετισμένα με:
➢ Την standard είσοδο / έξοδο
➢ Αρχεία
➢ Συμβολοσειρές
![Page 12: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/12.jpg)
Οθόνη & Πληκτρολόγιο
➢ Ορισμένα από την αρχή του προγράμματος, στο namespace std υπάρχουν τα cin, cout, cerr
➢ Στιγμιότυπα των κλάσεων istream και ostream
➢ Include το iostream header
![Page 13: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/13.jpg)
Οθόνη & Πληκτρολόγιο
➢ Ορισμένα από την αρχή του προγράμματος, στο namespace std υπάρχουν τα cin, cout, cerr
➢ Στιγμιότυπα των κλάσεων istream και ostream
➢ Include το iostream header
![Page 14: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/14.jpg)
Οθόνη & Πληκτρολόγιο
➢ Ορισμένα από την αρχή του προγράμματος, στο namespace std υπάρχουν τα cin, cout, cerr
➢ Στιγμιότυπα των κλάσεων istream και ostream
➢ Include το iostream header
![Page 15: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/15.jpg)
Οθόνη
➢ Τα ρεύματα cout και cerr είναι συνδεδεμένα με την standard έξοδο
➢ Το cout προορίζεται για την “κανονική” εκτύπωση μηνυμάτων του προγράμματος
➢ Το cerr προορίζεται για την εκτύπωση μηνυμάτων λαθών
![Page 16: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/16.jpg)
Οθόνη
➢ Τα ρεύματα cout και cerr είναι συνδεδεμένα με την standard έξοδο
➢ Το cout προορίζεται για την “κανονική” εκτύπωση μηνυμάτων του προγράμματος
➢ Το cerr προορίζεται για την εκτύπωση μηνυμάτων λαθών
![Page 17: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/17.jpg)
Οθόνη
➢ Τα ρεύματα cout και cerr είναι συνδεδεμένα με την standard έξοδο
➢ Το cout προορίζεται για την “κανονική” εκτύπωση μηνυμάτων του προγράμματος
➢ Το cerr προορίζεται για την εκτύπωση μηνυμάτων λαθών
![Page 18: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/18.jpg)
Πληκτρολόγιο
➢ Το cin ειναι το ρεύμα που είναι συνδεδεμένο με την standard είσοδο
![Page 19: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/19.jpg)
Παράδειγμα
![Page 20: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/20.jpg)
IO από αρχεία
➢ Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα:
➢ Για είσοδο – ifstream (input file stream)
➢ Για έξοδο – ofstream (output file stream)
➢ Και για τα δύο – fstream (file stream)
➢ Include το fstream header
![Page 21: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/21.jpg)
IO από αρχεία
➢ Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα:
➢ Για είσοδο – ifstream (input file stream)
➢ Για έξοδο – ofstream (output file stream)
➢ Και για τα δύο – fstream (file stream)
➢ Include το fstream header
![Page 22: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/22.jpg)
IO από αρχεία
➢ Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα:
➢ Για είσοδο – ifstream (input file stream)
➢ Για έξοδο – ofstream (output file stream)
➢ Και για τα δύο – fstream (file stream)
➢ Include το fstream header
![Page 23: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/23.jpg)
IO από αρχεία
➢ Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα:
➢ Για είσοδο – ifstream (input file stream)
➢ Για έξοδο – ofstream (output file stream)
➢ Και για τα δύο – fstream (file stream)
➢ Include το fstream header
![Page 24: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/24.jpg)
IO από αρχεία
➢ Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα:
➢ Για είσοδο – ifstream (input file stream)
➢ Για έξοδο – ofstream (output file stream)
➢ Και για τα δύο – fstream (file stream)
➢ Include το fstream header
![Page 25: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/25.jpg)
Error flags in streams
➢ Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους
➢ eofbit – δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF)
➢ badbit – δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα
➢ failbit – δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)
![Page 26: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/26.jpg)
Error flags in streams
➢ Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους
➢ eofbit – δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF)
➢ badbit – δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα
➢ failbit – δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)
![Page 27: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/27.jpg)
Error flags in streams
➢ Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους
➢ eofbit – δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF)
➢ badbit – δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα
➢ failbit – δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)
![Page 28: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/28.jpg)
Error flags in streams
➢ Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους
➢ eofbit – δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF)
➢ badbit – δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα
➢ failbit – δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)
![Page 29: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/29.jpg)
Error flags in streams
➢ Για κάθε bit, υπάρχει και αντίστοιχη συνάρτηση-μέλος ( eof, fail, bad )
➢ Η συνάρτηση-μέλος good ελέγχει αν δεν είναι set (1) κανένα από τα τρία αυτά bits
➢ Η συνάρτηση-μέλος clear μπορεί να αλλάξει τιμές στην κατάσταση του stream, και αν κληθεί χωρίς ορίσματα, κάνει unset (0) όλα τα error flags
![Page 30: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/30.jpg)
Error flags in streams
➢ Για κάθε bit, υπάρχει και αντίστοιχη συνάρτηση-μέλος ( eof, fail, bad )
➢ Η συνάρτηση-μέλος good ελέγχει αν δεν είναι set (1) κανένα από τα τρία αυτά bits
➢ Η συνάρτηση-μέλος clear μπορεί να αλλάξει τιμές στην κατάσταση του stream, και αν κληθεί χωρίς ορίσματα, κάνει unset (0) όλα τα error flags
![Page 31: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/31.jpg)
Error flags in streams
➢ Για κάθε bit, υπάρχει και αντίστοιχη συνάρτηση-μέλος ( eof, fail, bad )
➢ Η συνάρτηση-μέλος good ελέγχει αν δεν είναι set (1) κανένα από τα τρία αυτά bits
➢ Η συνάρτηση-μέλος clear μπορεί να αλλάξει τιμές στην κατάσταση του stream, και αν κληθεί χωρίς ορίσματα, κάνει unset (0) όλα τα error flags
![Page 32: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/32.jpg)
Παράδειγμα ifstream
![Page 33: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/33.jpg)
ifstream
➢ Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin
➢ Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής
➢ Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου
➢ Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους
![Page 34: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/34.jpg)
ifstream
➢ Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin
➢ Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής
➢ Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου
➢ Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους
![Page 35: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/35.jpg)
ifstream
➢ Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin
➢ Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής
➢ Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου
➢ Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους
![Page 36: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/36.jpg)
ifstream
➢ Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin
➢ Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής
➢ Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου
➢ Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους
![Page 37: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/37.jpg)
ifstream
➢ Με την συνάρτηση-μέλος peek μπορούμε να δούμε τον επόμενο χαρακτήρα στο ρεύμα, χωρίς να αφαιρεθεί από αυτό
➢ Με την συνάρτηση-μέλος ignore μπορούμε να παραβλέψουμε ένα πλήθος χαρακτήρων από το ρεύμα
➢ Με την συνάρτηση-μέλος getline μπορούμε να διαβάσουμε μια γραμμή από το ρεύμα και να την αποθηκεύσουμε σε κάποιον πίνακα χαρακτήρων
![Page 38: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/38.jpg)
ifstream
➢ Με την συνάρτηση-μέλος peek μπορούμε να δούμε τον επόμενο χαρακτήρα στο ρεύμα, χωρίς να αφαιρεθεί από αυτό
➢ Με την συνάρτηση-μέλος ignore μπορούμε να παραβλέψουμε ένα πλήθος χαρακτήρων από το ρεύμα
➢ Με την συνάρτηση-μέλος getline μπορούμε να διαβάσουμε μια γραμμή από το ρεύμα και να την αποθηκεύσουμε σε κάποιον πίνακα χαρακτήρων
![Page 39: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/39.jpg)
ifstream
➢ Με την συνάρτηση-μέλος peek μπορούμε να δούμε τον επόμενο χαρακτήρα στο ρεύμα, χωρίς να αφαιρεθεί από αυτό
➢ Με την συνάρτηση-μέλος ignore μπορούμε να παραβλέψουμε ένα πλήθος χαρακτήρων από το ρεύμα
➢ Με την συνάρτηση-μέλος getline μπορούμε να διαβάσουμε μια γραμμή από το ρεύμα και να την αποθηκεύσουμε σε κάποιον πίνακα χαρακτήρων
![Page 40: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/40.jpg)
ifstream
➢ Η συνάρτηση-μέλος getline μπορεί να αποθηκεύσει το αποτέλεσμα μόνο σε πίνακα χαρακτήρων
➢ char title[256]; in.getline (title,256);
➢ Για να μπορούμε να χρησιμοποιήσουμε strings, υπάρχει η συνάρτηση getline ορισμένη στο <string>
➢ string title; getline(in, title);
![Page 41: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/41.jpg)
ifstream
➢ Η συνάρτηση-μέλος getline μπορεί να αποθηκεύσει το αποτέλεσμα μόνο σε πίνακα χαρακτήρων
➢ char title[256]; in.getline (title,256);
➢ Για να μπορούμε να χρησιμοποιήσουμε strings, υπάρχει η συνάρτηση getline ορισμένη στο <string>
➢ string title; getline(in, title);
![Page 42: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/42.jpg)
ifstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως get pointer
➢ Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer
➢ Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 43: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/43.jpg)
ifstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως get pointer
➢ Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer
➢ Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 44: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/44.jpg)
ifstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως get pointer
➢ Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer
➢ Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 45: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/45.jpg)
ifstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως get pointer
➢ Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer
➢ Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 46: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/46.jpg)
Παράδειγμα οfstream
![Page 47: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/47.jpg)
ofstream
➢ Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout
➢ Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO)
➢ Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της
➢ Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο
![Page 48: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/48.jpg)
ofstream
➢ Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout
➢ Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO)
➢ Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της
➢ Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο
![Page 49: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/49.jpg)
ofstream
➢ Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout
➢ Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO)
➢ Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της
➢ Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο
![Page 50: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/50.jpg)
ofstream
➢ Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout
➢ Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO)
➢ Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της
➢ Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο
![Page 51: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/51.jpg)
ofstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως put pointer
➢ Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer
➢ Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 52: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/52.jpg)
ofstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως put pointer
➢ Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer
➢ Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 53: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/53.jpg)
ofstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως put pointer
➢ Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer
➢ Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 54: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/54.jpg)
ofstream & μετακίνηση στο αρχείο
➢ Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε
➢ Ο δείκτης είναι γνωστός και ως put pointer
➢ Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer
➢ Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)
![Page 55: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/55.jpg)
Παράδειγμα fstream
![Page 56: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/56.jpg)
Παράδειγμα fstream
➢ Το προηγούμενο παράδειγμα δεν θα δουλέψει αν το αρχείο data3.txt δεν υπάρχει ήδη
➢ Για να γίνει αυτό, πρέπει πρώτα να ανοίξουμε το αρχείο για γράψιμο ώστε να δημιουργηθεί και στη συνέχεια να το ανοίξουμε για διάβασμα και γράψιμο
![Page 57: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/57.jpg)
IO & binary files
➢ Με τα ifstream και ofstream μπορούμε να χειριστούμε και δυαδικά αρχεία (αρχεία που έχουν bytes και όχι κείμενο)
➢ Η συνάρτηση-μέλος read του ifstream, διαβάζει από το αρχείο ένα πλήθος από bytes και το αποθηκεύει σε έναν πίνακα χαρακτήρων
➢ Η συνάρτηση-μέλος write του ofstream, γράφει στο αρχείο ένα πλήθος από bytes, που τα διαβάζει από έναν πίνακα χαρακτήρων
![Page 58: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/58.jpg)
IO & binary files
➢ Με τα ifstream και ofstream μπορούμε να χειριστούμε και δυαδικά αρχεία (αρχεία που έχουν bytes και όχι κείμενο)
➢ Η συνάρτηση-μέλος read του ifstream, διαβάζει από το αρχείο ένα πλήθος από bytes και το αποθηκεύει σε έναν πίνακα χαρακτήρων
➢ Η συνάρτηση-μέλος write του ofstream, γράφει στο αρχείο ένα πλήθος από bytes, που τα διαβάζει από έναν πίνακα χαρακτήρων
![Page 59: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/59.jpg)
IO & binary files
➢ Με τα ifstream και ofstream μπορούμε να χειριστούμε και δυαδικά αρχεία (αρχεία που έχουν bytes και όχι κείμενο)
➢ Η συνάρτηση-μέλος read του ifstream, διαβάζει από το αρχείο ένα πλήθος από bytes και το αποθηκεύει σε έναν πίνακα χαρακτήρων
➢ Η συνάρτηση-μέλος write του ofstream, γράφει στο αρχείο ένα πλήθος από bytes, που τα διαβάζει από έναν πίνακα χαρακτήρων
![Page 60: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/60.jpg)
IO Streams & Strings
![Page 61: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/61.jpg)
IO Streams & Strings
➢ Η C++ παρέχει το stringstream σαν ένα τρόπο για να μπορούμε να χειριστούμε ένα string σαν να ήταν ρευμα
➢ Ένα ρεύμα συνδέεται με ένα string και στη συνέχεια μας παρέχεται η λειτουργικότητα που θα περιμέναμε από ένα οποιοδήποτε stream
➢ Include το sstream header
![Page 62: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/62.jpg)
IO Streams & Strings
➢ Η C++ παρέχει το stringstream σαν ένα τρόπο για να μπορούμε να χειριστούμε ένα string σαν να ήταν ρευμα
➢ Ένα ρεύμα συνδέεται με ένα string και στη συνέχεια μας παρέχεται η λειτουργικότητα που θα περιμέναμε από ένα οποιοδήποτε stream
➢ Include το sstream header
![Page 63: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/63.jpg)
IO Streams & Strings
➢ Η C++ παρέχει το stringstream σαν ένα τρόπο για να μπορούμε να χειριστούμε ένα string σαν να ήταν ρευμα
➢ Ένα ρεύμα συνδέεται με ένα string και στη συνέχεια μας παρέχεται η λειτουργικότητα που θα περιμέναμε από ένα οποιοδήποτε stream
➢ Include το sstream header
![Page 64: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/64.jpg)
istringstream
➢ Με το istringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εισόδου
➢ Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το διάβασμα ενός ακεραίου από ένα string
➢ Αντίστοιχο της συνάρτησης atoi
![Page 65: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/65.jpg)
istringstream
➢ Με το istringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εισόδου
➢ Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το διάβασμα ενός ακεραίου από ένα string
➢ Αντίστοιχο της συνάρτησης atoi
![Page 66: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/66.jpg)
ostringstream
➢ Με το ostringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εξόδου
➢ Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το γράψιμο αριθμών σε string
➢ Αντίστοιχο της συνάρτησης itoa
![Page 67: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/67.jpg)
ostringstream
➢ Με το ostringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εξόδου
➢ Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το γράψιμο αριθμών σε string
➢ Αντίστοιχο της συνάρτησης itoa
![Page 68: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/68.jpg)
Reference – Χρήσιμοι Σύνδεσμοι
➢ cplusplus.com
➢ ifstream
➢ ofstream
➢ fstream
➢ getline για string
➢ stringstream
➢ istringstream
➢ ostringstream
![Page 69: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/69.jpg)
Streams & Inheritance
istream ostream
iostream
fstream stringstream
istringstream ofstreamifstream ostringstream
![Page 70: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/70.jpg)
Streams – more examples
![Page 71: C++ IO Tutorial](https://reader034.vdocuments.net/reader034/viewer/2022042700/5597cdc01a28ab30208b4612/html5/thumbnails/71.jpg)
Questions?