C++ Χειρισμός αρχείων: Τρόπος ανοίγματος, εγγραφής, ανάγνωσης, κλεισίματος αρχείων C++
Τι είναι ο χειρισμός αρχείων C++?
Τα αρχεία αποθηκεύουν δεδομένα μόνιμα σε μια συσκευή αποθήκευσης. Με το χειρισμό αρχείων, η έξοδος από ένα πρόγραμμα μπορεί να αποθηκευτεί σε ένα αρχείο. Διάφορες λειτουργίες μπορούν να εκτελεστούν στα δεδομένα ενώ βρίσκονται στο αρχείο.
Μια ροή είναι μια αφαίρεση μιας συσκευής όπου εκτελούνται λειτουργίες εισόδου/εξόδου. Μπορείτε να αναπαραστήσετε μια ροή είτε ως προορισμό είτε ως πηγή χαρακτήρων αόριστου μήκους. Αυτό θα καθοριστεί από τη χρήση τους. C++ σας παρέχει μια βιβλιοθήκη που συνοδεύεται από μεθόδους χειρισμού αρχείων. Ας το συζητήσουμε.
Η βιβλιοθήκη fstream
Η βιβλιοθήκη fstream παρέχει C++ προγραμματιστές με τρεις κατηγορίες για εργασία με αρχεία. Αυτές οι τάξεις περιλαμβάνουν:
- του ρεύματος– Αυτή η κλάση αντιπροσωπεύει μια ροή εξόδου. Χρησιμοποιείται για τη δημιουργία αρχείων και την εγγραφή πληροφοριών σε αρχεία.
- ifstream– Αυτή η κλάση αντιπροσωπεύει μια ροή εισόδου. Χρησιμοποιείται για την ανάγνωση πληροφοριών από αρχεία δεδομένων.
- ρεύμα– Αυτή η κλάση αντιπροσωπεύει γενικά μια ροή αρχείων. Έρχεται με δυνατότητες offstream/ifstream. Αυτό σημαίνει ότι είναι σε θέση να δημιουργεί αρχεία, να γράφει σε αρχεία, να διαβάζει από αρχεία δεδομένων.
Η ακόλουθη εικόνα διευκολύνει την κατανόηση:
Για να χρησιμοποιήσετε τις παραπάνω κλάσεις της βιβλιοθήκης fstream, πρέπει να την συμπεριλάβετε στο πρόγραμμά σας ως αρχείο κεφαλίδας. Φυσικά, θα χρησιμοποιήσετε την οδηγία #include preprocessor. Πρέπει επίσης να συμπεριλάβετε το αρχείο κεφαλίδας iostream.
Πώς να ανοίξετε αρχεία
Πριν εκτελέσετε οποιαδήποτε λειτουργία σε ένα αρχείο, πρέπει πρώτα να το ανοίξετε. Εάν χρειάζεται να γράψετε στο αρχείο, ανοίξτε το χρησιμοποιώντας αντικείμενα fstream ή offstream. Εάν χρειάζεται μόνο να διαβάσετε από το αρχείο, ανοίξτε το χρησιμοποιώντας το αντικείμενο ifstream.
Τα τρία αντικείμενα, δηλαδή fstream, ofstream και ifstream, έχουν τη συνάρτηση open() που ορίζεται σε αυτά. Η συνάρτηση παίρνει αυτή τη σύνταξη:
open (file_name, mode);
- Η παράμετρος file_name υποδηλώνει το όνομα του αρχείου που θα ανοίξει.
- Η παράμετρος λειτουργίας είναι προαιρετική. Μπορεί να λάβει οποιαδήποτε από τις ακόλουθες τιμές:
αξία | Descriptιόν |
---|---|
iOS:: εφαρμογή | Η λειτουργία προσάρτησης. Η έξοδος που αποστέλλεται στο αρχείο προσαρτάται σε αυτό. |
ιος::ατ | Ανοίγει το αρχείο για την έξοδο και στη συνέχεια μετακινεί το στοιχείο ελέγχου ανάγνωσης και εγγραφής στο τέλος του αρχείου. |
ios::in | Ανοίγει το αρχείο για ανάγνωση. |
ios::out | Ανοίγει το αρχείο για εγγραφή. |
ios::trunc | Εάν υπάρχει ένα αρχείο, τα στοιχεία του αρχείου θα πρέπει να περικοπούν πριν από το άνοιγμά του. |
Είναι δυνατή η ταυτόχρονη χρήση δύο λειτουργιών. Τα συνδυάζετε χρησιμοποιώντας το | (Ή) χειριστή.
Παράδειγμα 1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμα για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε το αρχείο κεφαλίδας fstream στο πρόγραμμα για να χρησιμοποιήσετε τις κλάσεις του.
- Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
- Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να πηγαίνει μέσα στο σώμα του.
- Δημιουργήστε ένα αντικείμενο της κλάσης fstream και δώστε του το όνομα my_file.
- Εφαρμόστε τη συνάρτηση open() στο παραπάνω αντικείμενο για να δημιουργήσετε ένα νέο αρχείο. Η λειτουργία εξόδου μας επιτρέπει να γράφουμε στο αρχείο.
- Χρησιμοποιήστε τη δήλωση if για να ελέγξετε εάν η δημιουργία αρχείου απέτυχε.
- Μήνυμα για εκτύπωση στην κονσόλα εάν το αρχείο δεν δημιουργήθηκε.
- Τέλος του σώματος της δήλωσης if.
- Χρησιμοποιήστε μια δήλωση else για να δηλώσετε τι πρέπει να κάνετε εάν το αρχείο δημιουργήθηκε.
- Μήνυμα για εκτύπωση στην κονσόλα εάν το αρχείο δημιουργήθηκε.
- Εφαρμόστε τη συνάρτηση close() στο αντικείμενο για να κλείσετε το αρχείο.
- Τέλος του σώματος της δήλωσης else.
- Το πρόγραμμα πρέπει να επιστρέψει τιμή εάν ολοκληρωθεί με επιτυχία.
- Τέλος του σώματος της συνάρτησης main().
Πώς να κλείσετε αρχεία
Μιά φορά C++ πρόγραμμα τερματίζεται, αυτόματα
- ξεπλένει τα ρέματα
- απελευθερώνει την εκχωρημένη μνήμη
- κλείνει τα ανοιχτά αρχεία.
Ωστόσο, ως προγραμματιστής, θα πρέπει να μάθετε να κλείνετε ανοιχτά αρχεία πριν τερματιστεί το πρόγραμμα.
Τα αντικείμενα fstream, ofstream και ifstream έχουν τη λειτουργία close() για το κλείσιμο αρχείων. Η συνάρτηση παίρνει αυτή τη σύνταξη:
void close();
Πώς να γράψετε σε αρχεία
Μπορείτε να γράψετε στο αρχείο απευθείας από το δικό σας C++ πρόγραμμα. Χρησιμοποιείτε τον τελεστή εισαγωγής ροής (<<) για αυτό. Το κείμενο που θα γραφτεί στο αρχείο θα πρέπει να περικλείεται σε διπλά εισαγωγικά.
Ας το αποδείξουμε αυτό.
Παράδειγμα 2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμα για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε το αρχείο κεφαλίδας fstream στο πρόγραμμα για να χρησιμοποιήσετε τις κλάσεις του.
- Συμπεριλάβετε τον χώρο ονομάτων std στο πρόγραμμα για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
- Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της συνάρτησης.
- Δημιουργήστε μια παρουσία της κλάσης fstream και δώστε της το όνομα my_file.
- Χρησιμοποιήστε τη συνάρτηση open() για να δημιουργήσετε ένα νέο αρχείο με το όνομα my_file.txt. Το αρχείο θα ανοίξει σε κατάσταση εξόδου για εγγραφή σε αυτό.
- Χρησιμοποιήστε μια δήλωση if για να ελέγξετε αν το αρχείο δεν έχει ανοίξει.
- Κείμενο προς εκτύπωση στην κονσόλα εάν το αρχείο δεν ανοίξει.
- Τέλος του σώματος της δήλωσης if.
- Χρησιμοποιήστε μια δήλωση else για να δηλώσετε τι πρέπει να κάνετε εάν το αρχείο δημιουργήθηκε.
- Κείμενο προς εκτύπωση στην κονσόλα εάν το αρχείο δημιουργήθηκε.
- Γράψτε λίγο κείμενο στο αρχείο που δημιουργήθηκε.
- Χρησιμοποιήστε τη συνάρτηση close() για να κλείσετε το αρχείο.
- Τέλος του σώματος της δήλωσης else.
- Το πρόγραμμα πρέπει να επιστρέψει τιμή μετά την επιτυχή ολοκλήρωση.
- Τέλος του σώματος της συνάρτησης main().
Πώς να διαβάζετε από αρχεία
Μπορείτε να διαβάσετε πληροφορίες από αρχεία στο δικό σας C++ πρόγραμμα. Αυτό είναι δυνατό χρησιμοποιώντας τον τελεστή εξαγωγής ροής (>>). Χρησιμοποιείτε τον τελεστή με τον ίδιο τρόπο που τον χρησιμοποιείτε για να διαβάζετε τα δεδομένα εισόδου χρήστη από το πληκτρολόγιο. Ωστόσο, αντί να χρησιμοποιείτε το αντικείμενο cin, χρησιμοποιείτε το αντικείμενο ifstream/fstream.
Παράδειγμα 3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Παραγωγή:
Κανένα τέτοιο αρχείο
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμα για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε το αρχείο κεφαλίδας fstream στο πρόγραμμα για να χρησιμοποιήσετε τις κλάσεις του.
- Συμπεριλάβετε τον χώρο ονομάτων std στο πρόγραμμα για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
- Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της συνάρτησης.
- Δημιουργήστε μια παρουσία της κλάσης fstream και δώστε της το όνομα my_file.
- Χρησιμοποιήστε τη συνάρτηση open() για να δημιουργήσετε ένα νέο αρχείο με το όνομα my_file.txt. Το αρχείο θα ανοίξει σε κατάσταση λειτουργίας για ανάγνωση από αυτό.
- Χρησιμοποιήστε μια δήλωση if για να ελέγξετε εάν το αρχείο δεν υπάρχει.
- Κείμενο προς εκτύπωση στην κονσόλα εάν το αρχείο δεν βρεθεί.
- Τέλος του σώματος της δήλωσης if.
- Χρησιμοποιήστε μια δήλωση else για να δηλώσετε τι πρέπει να κάνετε εάν βρεθεί το αρχείο.
- Δημιουργία char μεταβλητή με το όνομα κεφ.
- Δημιουργία ενώ βρόχος για επανάληψη πάνω από τα περιεχόμενα του αρχείου.
- Γράψτε/αποθηκεύστε τα περιεχόμενα του αρχείου στη μεταβλητή ch.
- Χρησιμοποιήστε μια συνθήκη if και συνάρτηση eof() που είναι το τέλος του αρχείου, για να διασφαλίσετε ότι ο μεταγλωττιστής συνεχίζει να διαβάζει από το αρχείο εάν δεν φτάσει στο τέλος.
- Χρησιμοποιήστε μια δήλωση διακοπής για να σταματήσετε την ανάγνωση από το αρχείο μόλις φτάσετε στο τέλος.
- Εκτυπώστε τα περιεχόμενα της μεταβλητής ch στην κονσόλα.
- Τέλος του σώματος ενώ.
- Τέλος του σώματος της δήλωσης else.
- Καλέστε τη συνάρτηση close() για να κλείσετε το αρχείο.
- Το πρόγραμμα πρέπει να επιστρέψει τιμή μετά την επιτυχή ολοκλήρωση.
- Τέλος του σώματος της συνάρτησης main().
Σύνοψη
- Με το χειρισμό αρχείων, η έξοδος ενός προγράμματος μπορεί να σταλεί και να αποθηκευτεί σε ένα αρχείο.
- Στη συνέχεια, ένας αριθμός λειτουργιών μπορεί να εφαρμοστεί στα δεδομένα ενώ βρίσκεστε στο αρχείο.
- Μια ροή είναι μια αφαίρεση που αντιπροσωπεύει μια συσκευή όπου εκτελούνται λειτουργίες εισόδου/εξόδου.
- Μια ροή μπορεί να αναπαρασταθεί είτε ως προορισμός είτε ως πηγή χαρακτήρων αορίστου μήκους.
- Η βιβλιοθήκη fstream παρέχει C++ προγραμματιστές με μεθόδους χειρισμού αρχείων.
- Για να χρησιμοποιήσετε τη βιβλιοθήκη, πρέπει να την συμπεριλάβετε στο πρόγραμμά σας χρησιμοποιώντας την οδηγία προεπεξεργαστή #include.