C++ Βασική Είσοδος/Έξοδος: Παράδειγμα Cout, Cin, Cerr
Σε τι περιλαμβάνονται τα Streams C++?
C++ παρέχει στους χρήστες έναν αριθμό βιβλιοθηκών που μπορούν να χρησιμοποιήσουν για την εκτέλεση εργασιών εισόδου/εξόδου. Αυτές οι εργασίες γίνονται με τη μορφή ακολουθιών byte, που ονομάζονται ευρέως ροές.
Τα ρεύματα χωρίζονται σε δύο:
Τύποι ρεμάτων
- Ροή εισόδου: Αυτός είναι ένας τύπος ροής όπου τα byte ρέουν από μια συσκευή όπως ένα πληκτρολόγιο στην κύρια μνήμη.
- Ροή εξόδου: Αυτός είναι ένας τύπος ροής όπου τα byte ρέουν προς την αντίθετη κατεύθυνση, δηλαδή από την κύρια μνήμη στη συνέχεια στη συσκευή, όπως η οθόνη προβολής.
Πώς λειτουργούν οι ροές;
C++ οι ροές λειτουργούν ως εξής:
- Αρχικά, μια ροή αρχικοποιείται με τον σωστό τύπο.
- Στη συνέχεια, θα πρέπει να δηλώσετε πού I / O θα συμβεί χρησιμοποιώντας δείκτες get/put.
- Αφού φτάσετε στη σωστή θέση σε μια ροή, μπορείτε να εκτελέσετε εργασίες εισόδου και εξόδου χρησιμοποιώντας τους τελεστές >> και <<, αντίστοιχα.
Πίνακας λειτουργιών
Οι παρακάτω είναι οι λειτουργίες που παρέχονται στο αρχείο κεφαλίδας stream.h:
Τάξη | Συναρτήσεις |
---|---|
Filebuf | Ρυθμίζει τα buffer αρχείων για ανάγνωση/εγγραφή. Έχει τις λειτουργίες close() και open() σε αυτό |
fstreambase | Είναι η βασική κλάση για τις κλάσεις ifstream, fstream και ofstream. Οι λειτουργίες του είναι κοινές στις ροές αρχείων. |
ifstream | Είναι μια κλάση ροής αρχείων εισόδου για την παροχή λειτουργιών εισόδου. |
του ρεύματος | Είναι μια κατηγορία ροής αρχείων εξόδου για την παροχή λειτουργιών εξόδου. |
ρεύμα | Είναι μια κατηγορία ροής εισόδου/εξόδου. Υποστηρίζει ταυτόχρονες λειτουργίες εισόδου/εξόδου. |
C++ Αρχεία κεφαλίδας για είσοδο/έξοδο
C++ παρέχει τρεις βιβλιοθήκες που συνοδεύονται από λειτουργίες για την εκτέλεση βασικών εργασιών εισόδου/εξόδου. Περιλαμβάνουν:
- Iostream: Είναι ένα ακρωνύμιο για την τυπική ροή εισόδου/εξόδου. Αυτό το αρχείο κεφαλίδας συνοδεύεται από ορισμούς για αντικείμενα όπως το cin/cout/cerr.
- Ιωμανίπ: Είναι ένα αρκτικόλεξο για τους χειριστές εισόδου/εξόδου. Η βιβλιοθήκη διαθέτει λειτουργίες που μπορούν να χρησιμοποιηθούν για τον χειρισμό των ροών. Περιέχει ορισμούς για αντικείμενα όπως setw, setprecision και άλλα.
- Fstream: Αυτό είναι ένα αρχείο κεφαλίδας για την περιγραφή της ροής αρχείων. Χειρίζεται δεδομένα που διαβάζονται από το αρχείο ως είσοδο ή που εγγράφονται σε ένα αρχείο, την έξοδο.
Οι λέξεις-κλειδιά cin και cout είναι πολύ δημοφιλείς C++. Χρησιμοποιούνται για τη λήψη εισόδων και εξόδων εκτύπωσης, αντίστοιχα. Για να τα χρησιμοποιήσετε, πρέπει να συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά σας. Ο λόγος είναι ότι ορίζονται σε αυτό το αρχείο κεφαλίδας. Η αποτυχία συμπερίληψης του αρχείου κεφαλίδας iostream θα δημιουργήσει σφάλμα. Αυτό προκύπτει από μια αποτυχία του C++ μεταγλωττιστή για να κατανοήσετε τη σημασία των λέξεων-κλειδιών.
Τα κύρια αντικείμενα που ορίζονται στο αρχείο κεφαλίδας iostream είναι το cin, το cout, το cerr και το clog. Ας τα συζητήσουμε.
std::out
Το αντικείμενο cout είναι ένα παράδειγμα της κλάσης iostream. Χρησιμοποιείται για την παραγωγή εξόδου σε μια τυπική συσκευή εξόδου, η οποία είναι συνήθως η οθόνη. Χρησιμοποιείται μαζί με τον τελεστή εισαγωγής ροής (<<).
Παράδειγμα
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream όπου ορίζεται το αντικείμενο cout.
- Συμπεριλάβετε τον χώρο ονομάτων std ώστε να μην χρειάζεται να τον καλούμε όταν χρησιμοποιούμε τις κλάσεις του.
- Καλέστε τη συνάρτηση main(). Ο κώδικας του προγράμματος πρέπει να προστεθεί στο σώμα του. Το ανοιγόμενο σγουρό στήριγμα { σηματοδοτεί την αρχή του σώματός του.
- Δημιουργήστε μια μεταβλητή χαρακτήρων με το όνομα Welcome για να κρατήσετε τη συμβολοσειρά Welcome to Guru99.
- Εκτυπώστε την τιμή της συμβολοσειράς καλωσορίσματος στην κονσόλα. Το endl είναι α C++ λέξη-κλειδί που σημαίνει τελική γραμμή. Μετακινεί τον κέρσορα για να ξεκινήσει η εκτύπωση κειμένου στην επόμενη γραμμή.
- Το πρόγραμμα πρέπει να επιστρέψει τιμή μετά την επιτυχή εκτέλεση.
- Τέλος του σώματος της συνάρτησης main().
std::cin
Το αντικείμενο cin είναι μια εμφάνιση της κλάσης istream. Διαβάζει είσοδο από τη συσκευή εισόδου, το πληκτρολόγιο. Συνήθως χρησιμοποιείται μαζί με τον τελεστή εξαγωγής (>>). Το αντικείμενο εξαγωγής είναι υπεύθυνο για την εξαγωγή δεδομένων που εισάγονται μέσω του πληκτρολογίου από το αντικείμενο cin.
Παράδειγμα
Το παρακάτω παράδειγμα δείχνει πώς να χρησιμοποιήσετε τη λέξη-κλειδί cin στο C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας. Το αντικείμενο cin ορίζεται σε αυτό το αρχείο κεφαλίδας.
- Συμπεριλάβετε τον χώρο ονομάτων std για να χρησιμοποιήσετε τις κλάσεις του. Δεν θα χρειαστεί να καλέσετε το std όταν χρησιμοποιείτε τις κλάσεις του.
- Καλέστε τη συνάρτηση main(). Ο κώδικας του προγράμματος πρέπει να προστεθεί στο σώμα του.
- Η έναρξη του κορμού του προγράμματος.
- Δηλώστε ένα ακέραια μεταβλητή επώνυμος αριθμός.
- Εκτυπώστε ένα μήνυμα στην οθόνη που ζητά από τον χρήστη να εισαγάγει έναν αριθμό.
- Διαβάστε την τιμή που εισήγαγε ο χρήστης στην κονσόλα από το πληκτρολόγιο.
- Εκτυπώστε την τιμή που διαβάσατε παραπάνω στην κονσόλα μαζί με άλλο κείμενο.
- Το πρόγραμμα θα πρέπει να επιστρέψει μια τιμή εάν εκτελεστεί με επιτυχία.
- Τέλος του σώματος της κύριας λειτουργίας.
std::cerr
Το αντικείμενο cerr σχηματίζει την τυπική ροή σφαλμάτων για την έξοδο σφαλμάτων C++. Το Cerr είναι ένα παράδειγμα της κλάσης ostream. Το αντικείμενο cerr είναι χωρίς προσωρινή αποθήκευση. Αυτό σημαίνει ότι χρησιμοποιείται όταν ένα μήνυμα σφάλματος πρόκειται να εμφανιστεί αμέσως.
Δεδομένου ότι είναι χωρίς προσωρινή αποθήκευση, δεν αποθηκεύει μήνυμα σφάλματος για μεταγενέστερη εμφάνιση. Χρησιμοποιείται μαζί με τον τελεστή εισαγωγής ροής (<<).
Παράδειγμα
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream όπου έχει οριστεί το αντικείμενο cerr.
- Συμπεριλάβετε τον χώρο ονομάτων std ώστε να μην χρειάζεται να τον καλούμε όταν χρησιμοποιούμε τις κλάσεις του.
- Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα του. Το ανοιγόμενο σγουρό στήριγμα σηματοδοτεί την αρχή του σώματος της λειτουργίας.
- Χρησιμοποιήστε το αντικείμενο cerr για να εκτυπώσετε ένα σφάλμα στην κονσόλα.
- Το πρόγραμμα πρέπει να επιστρέψει μια τιμή μετά την επιτυχή εκτέλεση.
- Τέλος του σώματος της κύριας λειτουργίας.
std:: clog
Το αντικείμενο clog είναι μια εμφάνιση της κλάσης ostream. Χρησιμοποιείται για την εμφάνιση σφαλμάτων στην τυπική οθόνη, την οθόνη. Είναι παρόμοιο με το αντικείμενο cerr, αλλά είναι buffer. Δεδομένου ότι είναι αποθηκευμένο στην προσωρινή μνήμη, αποθηκεύει το μήνυμα σφάλματος στο buffer μέχρι να γεμίσει/εκπλυθεί το buffer. Χρησιμοποιείται μαζί με τον τελεστή εισαγωγής ροής (<<).
Παράδειγμα
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλαμβανομένου του αρχείου κεφαλίδας iostream στο οποίο ορίζεται το αντικείμενο clog.
- Συμπεριλαμβανομένου του χώρου ονομάτων std ώστε να μπορούμε να χρησιμοποιούμε τις κλάσεις του χωρίς να τον καλούμε.
- Κλήση της συνάρτησης main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα του. Το { σηματοδοτεί την αρχή του σώματος της συνάρτησης.
- Χρησιμοποιήστε το αντικείμενο απόφραξης για να εκτυπώσετε ένα σφάλμα στην τυπική έξοδο, την οθόνη.
- Το πρόγραμμα πρέπει να επιστρέψει μια τιμή μετά την επιτυχή ολοκλήρωση.
- Το τέλος του σώματος της συνάρτησης main().
Σφάλμα χειρισμού με ροές IO
Για να ελέγξετε εάν μια ροή είναι έγκυρη ή όχι, μπορείτε να τη χρησιμοποιήσετε ως Boolean.
Ακολουθεί ένα παράδειγμα:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
Για να λάβετε περισσότερες λεπτομέρειες για την κατάσταση ροής, μπορείτε να χρησιμοποιήσετε αυτές τις λειτουργίες:
- καλή()- θα επιστρέψει true αν όλα είναι εντάξει.
- bad()- θα επιστρέψει true εάν παρουσιαστεί μοιραίο σφάλμα.
- fail()- θα επιστρέψει true μετά από ανεπιτυχή λειτουργία ροής.
- Το eof()- θα επιστρέψει true αν φτάσει στο τέλος ενός αρχείου.
Για να μάθετε εάν μια συγκεκριμένη λειτουργία ανάγνωσης/εγγραφής απέτυχε, δοκιμάστε το αποτέλεσμα ανάγνωσης.
Για παράδειγμα, για να ελέγξετε αν ο χρήστης εισήγαγε έγκυρο ακέραιο, κάντε το εξής:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }
Σύνοψη
- Οι εργασίες εισόδου και εξόδου In C++ γίνονται μέσω της ακολουθίας byte. Τα byte ονομάζονται ροές.
- Σε μια ροή εισόδου, τα byte ρέουν από τη συσκευή εισόδου σαν ένα πληκτρολόγιο στην κύρια μνήμη.
- Σε μια ροή εξόδου, τα byte από την κύρια μνήμη στη συνέχεια σε μια συσκευή εξόδου όπως μια οθόνη.
- Το αντικείμενο cin είναι μια εμφάνιση της κλάσης istream. Διαβάζει είσοδο από μια συσκευή εισόδου όπως το πληκτρολόγιο.
- Το αντικείμενο cout είναι ένα παράδειγμα της κλάσης ostream. Παράγει έξοδο σε συσκευές εξόδου όπως η οθόνη.
- Το αντικείμενο cerr είναι μια εμφάνιση της κλάσης ostream. Εμφανίζει αντικείμενα σφάλματος στην οθόνη.
- Το αντικείμενο clog είναι παράδειγμα της κλάσης ostream. Εμφανίζει μηνύματα σφάλματος στις συσκευές εξόδου.
- Το αντικείμενο clog αποθηκεύει τα μηνύματα σφάλματος, ενώ το αντικείμενο cerr όχι.