Streams Input / Output in C++ George Kastrinis

Σχετικά έγγραφα
Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

S, (5, -3, 34, -23, 7) ( *, _

18. ΡΕΥΜΑΤΑ(STREAMS) ΚΑΙ ΑΡΧΕΙΑ (FILES)

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραµµατιστικές Τεχνικές

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Χωρική Βάση δεδοµένων Autocad

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Προγραμματιστικές τεχνικές

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Προγραμματισμός Υπολογιστών με C++

test.txt #include <iostream> #include <fstream> int main()

Ενδεικτική περιγραφή μαθήματος

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Εισαγωγή στην πληροφορική

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Αναφορές, είκτες και Αλφαριθμητικά

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Εργαστήριο 9: Αρχεία

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Οντοκεντρικός Προγραμματισμός

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Ενδεικτική περιγραφή μαθήματος

Διάλεξη 18η: Διαχείρηση Αρχείων

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)

Περιεχόμενα. Πρόλογος... 21

Οντοκεντρικόσ Ρρογραμματιςμόσ

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string

Προγραµµατιστικές Τεχνικές

Πίνακες (Arrays) Εισαγωγή στη C++

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

Αρχεία και Ρεύματα. Αρχεία

Ανάπτυξη και Σχεδίαση Λογισμικού

Φροντιςτήριο. Linked-List

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

HY150a Φροντιστήριο 3 24/11/2017

Εισαγωγή στον Προγραμματισμό

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Προγραμματισμός Υπολογιστών με C++

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Δομημένος Προγραμματισμός (ΤΛ1006)

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Περιεχόμενα. Πρόλογος... 17

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

Προγραμματισμός Ι (ΗΥ120)

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Οντοκεντρικός Προγραμματισμός

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Λιβανός Γιώργος Εξάμηνο 2017Β

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

Προγραμματισμός Ι (ΗΥ120)

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Επεξεργασία Αρχείων Κειµένου

Βιβλιοθήκη stdio. Προγραμματισμός II 1

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

lab11 - Να εκτυπώνεις πιο κατατοπιστικά µηνύµατα λάθους. Αν είναι όλα ίδια, δεν είναι ξεκάθαρο ποιο αρχείο έχει πρόβληµα.

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Συµβολοσειρές - Strings

4 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

Προγραμματισμός Υπολογιστών με C++

Βασικές λειτουργίες συστήματος πάνω σε αρχεία δεδομένων. Προγραμματισμός II 1

κεφάλαιο Αρχεία Ι - Text

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Υπολογιστών με C++

Πληροφορική 2. Γλώσσες Προγραμματισμού

Στοιχειώδης προγραμματισμός σε C++

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Εργαστήριο 5. Εαρινό Εξάμηνο

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Transcript:

Streams Input / Output in C++ George Kastrinis (gkastrinis@di.uoa.gr)

Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια ακολουθία χαρακτήρων (γενικότερα bytes) Ένα ρεύμα μπορεί να είναι για είσοδο, για έξοδο ή και για τα δύο

Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια ακολουθία χαρακτήρων (γενικότερα bytes) Ένα ρεύμα μπορεί να είναι για είσοδο, για έξοδο ή και για τα δύο

Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια ακολουθία χαρακτήρων (γενικότερα bytes) Ένα ρεύμα μπορεί να είναι για είσοδο, για έξοδο ή και για τα δύο

Streams Why? Η έννοια του ρεύματος ταιριάζει αρκετά με την αντικειμενοστρεφή προσέγγιση Ένα επίπεδο αφαίρεσης Η είσοδος και η έξοδος αντιμετωπίζονται σαν οντότητες από τις οποίες διαβάζουμε ή γράφουμε δεδομένα

Streams Why? Η έννοια του ρεύματος ταιριάζει αρκετά με την αντικειμενοστρεφή προσέγγιση Ένα επίπεδο αφαίρεσης Η είσοδος και η έξοδος αντιμετωπίζονται σαν οντότητες από τις οποίες διαβάζουμε ή γράφουμε δεδομένα

Streams Why? Η έννοια του ρεύματος ταιριάζει αρκετά με την αντικειμενοστρεφή προσέγγιση Ένα επίπεδο αφαίρεσης Η είσοδος και η έξοδος αντιμετωπίζονται σαν οντότητες από τις οποίες διαβάζουμε ή γράφουμε δεδομένα

Streams How? Η C++ προσφέρει ρεύματα συσχετισμένα με: Την standard είσοδο / έξοδο Αρχεία Συμβολοσειρές

Streams How? Η C++ προσφέρει ρεύματα συσχετισμένα με: Την standard είσοδο / έξοδο Αρχεία Συμβολοσειρές

Streams How? Η C++ προσφέρει ρεύματα συσχετισμένα με: Την standard είσοδο / έξοδο Αρχεία Συμβολοσειρές

Streams How? Η C++ προσφέρει ρεύματα συσχετισμένα με: Την standard είσοδο / έξοδο Αρχεία Συμβολοσειρές

Οθόνη & Πληκτρολόγιο Ορισμένα από την αρχή του προγράμματος, στο namespace std υπάρχουν τα cin, cout, cerr Στιγμιότυπα των κλάσεων istream και ostream Include το iostream header

Οθόνη & Πληκτρολόγιο Ορισμένα από την αρχή του προγράμματος, στο namespace std υπάρχουν τα cin, cout, cerr Στιγμιότυπα των κλάσεων istream και ostream Include το iostream header

Οθόνη & Πληκτρολόγιο Ορισμένα από την αρχή του προγράμματος, στο namespace std υπάρχουν τα cin, cout, cerr Στιγμιότυπα των κλάσεων istream και ostream Include το iostream header

Οθόνη Τα ρεύματα cout και cerr είναι συνδεδεμένα με την standard έξοδο Το cout προορίζεται για την κανονική εκτύπωση μηνυμάτων του προγράμματος Το cerr προορίζεται για την εκτύπωση μηνυμάτων λαθών

Οθόνη Τα ρεύματα cout και cerr είναι συνδεδεμένα με την standard έξοδο Το cout προορίζεται για την κανονική εκτύπωση μηνυμάτων του προγράμματος Το cerr προορίζεται για την εκτύπωση μηνυμάτων λαθών

Οθόνη Τα ρεύματα cout και cerr είναι συνδεδεμένα με την standard έξοδο Το cout προορίζεται για την κανονική εκτύπωση μηνυμάτων του προγράμματος Το cerr προορίζεται για την εκτύπωση μηνυμάτων λαθών

Πληκτρολόγιο Το cin ειναι το ρεύμα που είναι συνδεδεμένο με την standard είσοδο

Παράδειγμα

IO από αρχεία Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα: Για είσοδο ifstream (input file stream) Για έξοδο ofstream (output file stream) Και για τα δύο fstream (file stream) Include το fstream header

IO από αρχεία Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα: Για είσοδο ifstream (input file stream) Για έξοδο ofstream (output file stream) Και για τα δύο fstream (file stream) Include το fstream header

IO από αρχεία Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα: Για είσοδο ifstream (input file stream) Για έξοδο ofstream (output file stream) Και για τα δύο fstream (file stream) Include το fstream header

IO από αρχεία Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα: Για είσοδο ifstream (input file stream) Για έξοδο ofstream (output file stream) Και για τα δύο fstream (file stream) Include το fstream header

IO από αρχεία Για είσοδο / έξοδο από αρχεία, παρέχονται τα ρεύματα: Για είσοδο ifstream (input file stream) Για έξοδο ofstream (output file stream) Και για τα δύο fstream (file stream) Include το fstream header

Error flags in streams Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους eofbit δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF) badbit δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα failbit δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)

Error flags in streams Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους eofbit δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF) badbit δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα failbit δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)

Error flags in streams Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους eofbit δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF) badbit δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα failbit δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)

Error flags in streams Τα ρεύματα έχουν 3 bits τα οποία παρέχουν πληροφορίες για την κατάσταση τους eofbit δείχνει αν έχει τελειώσει το αρχείο με το οποίο ήταν συνδεδεμένο το ρεύμα (EOF) badbit δείχνει αν υπάρχει πρόβλημα με το ίδιο το ρεύμα failbit δείχνει αν υπήρξε πρόβλημα με την τελευταία ενέργεια πάνω στο ρεύμα (π.χ. διάβασμα ακεραίου, ενώ δεν υπήρχε ακέραιος για να διαβαστεί)

Error flags in streams Για κάθε bit, υπάρχει και αντίστοιχη συνάρτηση-μέλος ( eof, fail, bad ) Η συνάρτηση-μέλος good ελέγχει αν δεν είναι set (1) κανένα από τα τρία αυτά bits Η συνάρτηση-μέλος clear μπορεί να αλλάξει τιμές στην κατάσταση του stream, και αν κληθεί χωρίς ορίσματα, κάνει unset (0) όλα τα error flags

Error flags in streams Για κάθε bit, υπάρχει και αντίστοιχη συνάρτηση-μέλος ( eof, fail, bad ) Η συνάρτηση-μέλος good ελέγχει αν δεν είναι set (1) κανένα από τα τρία αυτά bits Η συνάρτηση-μέλος clear μπορεί να αλλάξει τιμές στην κατάσταση του stream, και αν κληθεί χωρίς ορίσματα, κάνει unset (0) όλα τα error flags

Error flags in streams Για κάθε bit, υπάρχει και αντίστοιχη συνάρτηση-μέλος ( eof, fail, bad ) Η συνάρτηση-μέλος good ελέγχει αν δεν είναι set (1) κανένα από τα τρία αυτά bits Η συνάρτηση-μέλος clear μπορεί να αλλάξει τιμές στην κατάσταση του stream, και αν κληθεί χωρίς ορίσματα, κάνει unset (0) όλα τα error flags

ifstream Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους

ifstream Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους

ifstream Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους

ifstream Το ifstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cin Με την συνάρτηση-μέλος good, ελέγχουμε αν η ενέργεια διαβάσματος ήταν επιτυχής Σε αντιστοιχία με την C, υπάρχει συνάρτηση-μέλος eof, που μας ενημερώνει για το τέλος του αρχείου Δεν είναι αναγκαστικό να κάνουμε close τα ρεύματα των αρχείων, καθώς κάτι τέτοιο γίνεται κατά την καταστροφή τους

ifstream Με την συνάρτηση-μέλος peek μπορούμε να δούμε τον επόμενο χαρακτήρα στο ρεύμα, χωρίς να αφαιρεθεί από αυτό Με την συνάρτηση-μέλος ignore μπορούμε να παραβλέψουμε ένα πλήθος χαρακτήρων από το ρεύμα Με την συνάρτηση-μέλος getline μπορούμε να διαβάσουμε μια γραμμή από το ρεύμα και να την αποθηκεύσουμε σε κάποιον πίνακα χαρακτήρων

ifstream Με την συνάρτηση-μέλος peek μπορούμε να δούμε τον επόμενο χαρακτήρα στο ρεύμα, χωρίς να αφαιρεθεί από αυτό Με την συνάρτηση-μέλος ignore μπορούμε να παραβλέψουμε ένα πλήθος χαρακτήρων από το ρεύμα Με την συνάρτηση-μέλος getline μπορούμε να διαβάσουμε μια γραμμή από το ρεύμα και να την αποθηκεύσουμε σε κάποιον πίνακα χαρακτήρων

ifstream Με την συνάρτηση-μέλος peek μπορούμε να δούμε τον επόμενο χαρακτήρα στο ρεύμα, χωρίς να αφαιρεθεί από αυτό Με την συνάρτηση-μέλος ignore μπορούμε να παραβλέψουμε ένα πλήθος χαρακτήρων από το ρεύμα Με την συνάρτηση-μέλος getline μπορούμε να διαβάσουμε μια γραμμή από το ρεύμα και να την αποθηκεύσουμε σε κάποιον πίνακα χαρακτήρων

ifstream Η συνάρτηση-μέλος getline μπορεί να αποθηκεύσει το αποτέλεσμα μόνο σε πίνακα χαρακτήρων char title[256]; in.getline (title,256); Για να μπορούμε να χρησιμοποιήσουμε strings, υπάρχει η συνάρτηση getline ορισμένη στο <string> string title; getline(in, title);

ifstream Η συνάρτηση-μέλος getline μπορεί να αποθηκεύσει το αποτέλεσμα μόνο σε πίνακα χαρακτήρων char title[256]; in.getline (title,256); Για να μπορούμε να χρησιμοποιήσουμε strings, υπάρχει η συνάρτηση getline ορισμένη στο <string> string title; getline(in, title);

ifstream & μετακίνηση στο αρχείο Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως get pointer Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

ifstream & μετακίνηση στο αρχείο Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως get pointer Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

ifstream & μετακίνηση στο αρχείο Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως get pointer Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

ifstream & μετακίνηση στο αρχείο Μαζί με κάθε input stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως get pointer Με την συνάρτηση-μέλος tellg μαθαίνουμε για το που βρίσκεται ο get pointer Με την συνάρτηση-μέλος seekg μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

Παράδειγμα ifstream

ofstream Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO) Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο

ofstream Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO) Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο

ofstream Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO) Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο

ofstream Το ofstream μπορεί να χρησιμοποιηθεί ακριβώς όπως και το cout Τα δεδομένα δεν είναι αναγκαστικό να γραφτούν αμέσως στο αρχείο (buffered IO) Υπάρχει η συνάρτηση-μέλος flush() που γράφει τα περιεχόμενα του buffer στο αρχείο, αμέσως μετά την κλήση της Κατά το κλείσιμο του αρχείου, γίνεται και γράψιμο του buffer στο αρχείο

ofstream & μετακίνηση στο αρχείο Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως put pointer Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

ofstream & μετακίνηση στο αρχείο Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως put pointer Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

ofstream & μετακίνηση στο αρχείο Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως put pointer Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

ofstream & μετακίνηση στο αρχείο Μαζί με κάθε output stream, υπάρχει και ένας δείκτης που δείχνει σε ποιό σημείο στο ρεύμα βρισκόμαστε Ο δείκτης είναι γνωστός και ως put pointer Με την συνάρτηση-μέλος tellp μαθαίνουμε για το που βρίσκεται ο put pointer Με την συνάρτηση-μέλος seekp μπορούμε να αλλάξουμε θέση στο δείκτη αυτό (σε αντιστοιχία με την συνάρτηση fseek στην C)

Παράδειγμα οfstream

Παράδειγμα fstream

Παράδειγμα fstream Το προηγούμενο παράδειγμα δεν θα δουλέψει αν το αρχείο data3.txt δεν υπάρχει ήδη Για να γίνει αυτό, πρέπει πρώτα να ανοίξουμε το αρχείο για γράψιμο ώστε να δημιουργηθεί και στη συνέχεια να το ανοίξουμε για διάβασμα και γράψιμο

IO & binary files Με τα ifstream και ofstream μπορούμε να χειριστούμε και δυαδικά αρχεία (αρχεία που έχουν bytes και όχι κείμενο) Η συνάρτηση-μέλος read του ifstream, διαβάζει από το αρχείο ένα πλήθος από bytes και το αποθηκεύει σε έναν πίνακα χαρακτήρων Η συνάρτηση-μέλος write του ofstream, γράφει στο αρχείο ένα πλήθος από bytes, που τα διαβάζει από έναν πίνακα χαρακτήρων

IO & binary files Με τα ifstream και ofstream μπορούμε να χειριστούμε και δυαδικά αρχεία (αρχεία που έχουν bytes και όχι κείμενο) Η συνάρτηση-μέλος read του ifstream, διαβάζει από το αρχείο ένα πλήθος από bytes και το αποθηκεύει σε έναν πίνακα χαρακτήρων Η συνάρτηση-μέλος write του ofstream, γράφει στο αρχείο ένα πλήθος από bytes, που τα διαβάζει από έναν πίνακα χαρακτήρων

IO & binary files Με τα ifstream και ofstream μπορούμε να χειριστούμε και δυαδικά αρχεία (αρχεία που έχουν bytes και όχι κείμενο) Η συνάρτηση-μέλος read του ifstream, διαβάζει από το αρχείο ένα πλήθος από bytes και το αποθηκεύει σε έναν πίνακα χαρακτήρων Η συνάρτηση-μέλος write του ofstream, γράφει στο αρχείο ένα πλήθος από bytes, που τα διαβάζει από έναν πίνακα χαρακτήρων

IO Streams & Strings

IO Streams & Strings Η C++ παρέχει το stringstream σαν ένα τρόπο για να μπορούμε να χειριστούμε ένα string σαν να ήταν ρευμα Ένα ρεύμα συνδέεται με ένα string και στη συνέχεια μας παρέχεται η λειτουργικότητα που θα περιμέναμε από ένα οποιοδήποτε stream Include το sstream header

IO Streams & Strings Η C++ παρέχει το stringstream σαν ένα τρόπο για να μπορούμε να χειριστούμε ένα string σαν να ήταν ρευμα Ένα ρεύμα συνδέεται με ένα string και στη συνέχεια μας παρέχεται η λειτουργικότητα που θα περιμέναμε από ένα οποιοδήποτε stream Include το sstream header

IO Streams & Strings Η C++ παρέχει το stringstream σαν ένα τρόπο για να μπορούμε να χειριστούμε ένα string σαν να ήταν ρευμα Ένα ρεύμα συνδέεται με ένα string και στη συνέχεια μας παρέχεται η λειτουργικότητα που θα περιμέναμε από ένα οποιοδήποτε stream Include το sstream header

istringstream Με το istringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εισόδου Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το διάβασμα ενός ακεραίου από ένα string Αντίστοιχο της συνάρτησης atoi

istringstream Με το istringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εισόδου Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το διάβασμα ενός ακεραίου από ένα string Αντίστοιχο της συνάρτησης atoi

ostringstream Με το ostringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εξόδου Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το γράψιμο αριθμών σε string Αντίστοιχο της συνάρτησης itoa

ostringstream Με το ostringstream μπορούμε να χειριστούμε ένα string σαν να ήταν ρεύμα εξόδου Ακολουθεί ενδεικτικό παράδειγμα χρήσης, για το γράψιμο αριθμών σε string Αντίστοιχο της συνάρτησης itoa

Reference Χρήσιμοι Σύνδεσμοι cplusplus.com ifstream ofstream fstream getline για string stringstream istringstream ostringstream

Streams & Inheritance istream ostream iostream fstream stringstream ifstream istringstream ofstream ostringstream

Streams more examples

Questions?