Σπίτι Προσωπικά Οικονομικά Σηματοδοτώντας το Ios Flags σε C ++ - ανδρείκελα

Σηματοδοτώντας το Ios Flags σε C ++ - ανδρείκελα

Βίντεο: Week 1 2024

Βίντεο: Week 1 2024
Anonim

Όταν ανοίγετε ένα αρχείο κατασκευάζοντας είτε ένα instream ή ifstream παράδειγμα, μπορείτε να τροποποιήσετε τον τρόπο ανοίγματος του αρχείου παρέχοντας τα αποκαλούμενα σημαία. Όσον αφορά τον υπολογιστή, μια σημαία είναι απλώς ένα μικρό στοιχείο, του οποίου η παρουσία ή η έλλειψη παρουσίας λέει μια λειτουργία πώς να κάνει κάτι. Με τις τάξεις ανάντη και ifstream, η λειτουργία αυτή είναι ο κατασκευαστής.

Μία σημαία μοιάζει με ios:: app αν χρησιμοποιείτε έναν μεταγλωττιστή που δεν είναι πλήρως συμβατός με ANSI ή μοιάζει με ios_base:: app αν χρησιμοποιείτε ένα που είναι πλήρως συμβατό με ANSI. Αυτή η συγκεκριμένη σημαία σημαίνει ότι θέλετε να γράψετε σε ένα αρχείο, αλλά θέλετε να προσαρτήσετε σε όλα τα υπάρχοντα δεδομένα που ενδέχεται να υπάρχουν ήδη σε ένα αρχείο. Παρέχετε αυτήν τη σημαία ως επιχείρημα του κατασκευαστή για το ρεύμα, όπως σε οποιοδήποτε από τα ακόλουθα παραδείγματα:

outstream εξόδου ("AppendableFile. Txt", ios:: app); outstream εξόδου ("AppendableFile. txt", ios_base:: app);

Μπορείτε να δείτε ότι η σημαία προστίθεται ως δεύτερη παράμετρος στον κατασκευαστή. Άλλες σημαίες υπάρχουν εκτός από την εφαρμογή και μπορείτε να τις συνδυάσετε χρησιμοποιώντας τον χειριστή ή, |. Για παράδειγμα, μια σημαία είναι ios:: nocreate (η οποία δεν περιλαμβάνεται στις νεότερες μεταγλωττιστές).

Αυτό σημαίνει "ανοίξτε το αρχείο μόνο αν υπάρχει ήδη. "Δηλαδή, μην δημιουργείτε το αρχείο αν δεν υπάρχει. (Να θυμάστε ότι το ρεύμα δημιουργεί ένα αρχείο αν δεν υπάρχει ήδη.) Εάν το αρχείο δεν υπάρχει, το άνοιγμα θα αποτύχει και όταν καλέσετε αποτυχία, θα πάρετε πίσω ένα true .

Η σημαία ios:: nocreate είναι χρήσιμη με ios:: app. Μαζί, αυτά τα ανοίγουν ένα υπάρχον αρχείο και προστίθενται σε αυτό . Δηλαδή, οι δύο μαζί θα λειτουργήσουν μόνο αν το αρχείο υπάρχει ήδη και η κλήση θα ανοίξει το αρχείο για μια λειτουργία προσάρτησης. Εάν το αρχείο δεν υπάρχει ήδη, το αρχείο δεν θα δημιουργηθεί. Ακολουθεί μια κλήση δείγματος:

outstream outfile ("… / MyFile. Txt", ios:: app | ios:: nocreate); αν (outfile. fail ()) {cout << "δεν ήταν δυνατό να ανοίξει το αρχείο!" << endl; επιστροφή 0?} outfile << "γεια" << endl; outfile. Κοντά();

Εάν το MyFile. txt δεν υπάρχει όταν εκτελείτε αυτόν τον κωδικό, λαμβάνετε το μήνυμα Δεν ήταν δυνατό να ανοίξετε το αρχείο! Αλλά αν MyFile. txt υπάρχει, η εφαρμογή ανοίγει, προσδίδει τη συμβολοσειρά Hi σε αυτήν και τελικά κλείνει.

Αποδεικνύεται ότι η σημαία nocreate δεν είναι διαθέσιμη στη νέα τυποποιημένη βιβλιοθήκη. Πλαίσιο. Επομένως, ο κώδικας λειτουργεί μόνο αν χρησιμοποιείτε μια παλαιότερη έκδοση της βιβλιοθήκης. Όταν χρησιμοποιείτε τον κώδικα:: Αποκλεισμός μεταγλωττιστή, βλέπετε το ακόλουθο μήνυμα λάθους:

σφάλμα: 'nocreate' δεν είναι μέλος '; std:: ios '

Ωστόσο, θα θέλετε να ελέγξετε αν ο συγκεκριμένος σας μεταγλωττιστής περιλαμβάνει μια βιβλιοθήκη που υποστηρίζει ios:: nocreate.Ο μεταγλωττιστής σας μπορεί να το υποστηρίξει ούτως ή άλλως, ακόμη και αν περιλαμβάνει τη νέα τυποποιημένη βιβλιοθήκη. Ως εναλλακτική λύση για ios:: nocreate, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα (που βρίσκεται στο παράδειγμα FileOutput02):

ifstream infile ("… / MyFile. Txt"); εάν (αποτυχία ()) {cout << "δεν ήταν δυνατό να ανοίξει το αρχείο!" << endl; επιστροφή 0?}}. Κοντά(); outstream εξόδου ("… / MyFile. txt", ios:: app); outfile << "γεια" << endl; outfile. Κοντά();

Σε αυτήν την περίπτωση, ξεκινάτε προσπαθώντας να ανοίξετε το αρχείο για ανάγνωση. Εάν το αρχείο δεν υπάρχει, δεν μπορείτε να διαβάσετε από αυτόν και ο κώδικας θα βγει με μήνυμα αποτυχίας. Εάν ο κώδικας μπορεί να διαβάσει από το αρχείο, ανοίγει ξανά το αρχείο για εγγραφή. Πρόκειται για μια δυσκίνητη λύση, αλλά λειτουργεί.

Ακολουθεί μια λίστα με τις διαθέσιμες σημαίες. Πρώτα, εδώ είναι αυτά για ios, σε περίπτωση που χρησιμοποιείτε έναν μεταγλωττιστή που δεν είναι εντελώς συμβατός με ANSI:

  • ios:: app: Αυτή η σημαία σημαίνει ότι θέλετε να ανοίξετε ένα αρχείο και να το προσαρτήσετε.

  • ios:: in: Συμπεριλάβετε αυτήν τη σημαία αν θέλετε να διαβάσετε από ένα αρχείο.

  • ios:: out : Συμπεριλάβετε αυτήν τη σημαία αν θέλετε να γράψετε σε ένα αρχείο.

  • ios:: trunc : Συμπεριλάβετε αυτήν τη σημαία αν θέλετε να διαγράψετε τα περιεχόμενα του αρχείου πριν γράψετε σε αυτό. Είναι το αντίθετο του append, και είναι επίσης το προεπιλεγμένο εάν δεν συμπεριλαμβάνετε συγκεκριμένα ios:: app.

  • ios:: nocreate : Χρησιμοποιήστε αυτήν τη σημαία εάν θέλετε να βεβαιωθείτε ότι το αρχείο δεν θα δημιουργηθεί εάν δεν υπάρχει, με αποτέλεσμα το αρχείο να μην ανοίγει.

  • ios:: noreplace : Αυτή η σημαία είναι το αντίθετο του nocreate. Χρησιμοποιήστε αυτήν τη σημαία αν θέλετε να δημιουργήσετε μόνο ένα νέο αρχείο. Εάν χρησιμοποιείτε αυτήν τη σημαία και το αρχείο υπάρχει ήδη, το αρχείο δεν θα ανοίξει και αυτή η αποτυχία θα επιστρέψει true .

Οι μεταγλωττιστές που είναι συμβατοί με το ANSI δεν υποστηρίζουν ούτε τη σημαία ios:: noreplace. Σε αυτή την περίπτωση, μπορείτε να χρησιμοποιήσετε το αντίθετο της διόρθωσης για τη σημαία ios: nocreate, όπως φαίνεται εδώ (και βρέθηκε στο παράδειγμα FileOutput03):

ifstream infile ("… / MyFile. Txt"); αν (! infile. fail ()) {cout << "το αρχείο υπάρχει ήδη!" << endl; επιστροφή 0?}}. Κοντά(); outstream ("… / MyFile. txt"). outfile << "γεια" << endl; outfile. Κοντά();

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

Οι ακόλουθες σημαίες είναι διαθέσιμες σε έναν συντάκτη που είναι απολύτως συμβατός με ANSI!

  • ios:: Ate: Χρησιμοποιήστε αυτήν τη σημαία για να μεταβείτε στο τέλος του αρχείου μετά το άνοιγμα της. Κανονικά, χρησιμοποιείτε αυτήν τη σημαία όταν θέλετε να προσθέσετε δεδομένα στο αρχείο.

  • ios_base:: δυαδικό: Χρησιμοποιήστε αυτήν τη σημαία για να καθορίσετε ότι το αρχείο που ανοίγετε θα περιέχει δυαδικά δεδομένα - δηλαδή δεδομένα που δεν αντιπροσωπεύουν συμβολοσειρές χαρακτήρων.

  • ios_base:: in: Καθορίστε αυτήν τη σημαία όταν θέλετε να διαβάσετε από ένα αρχείο.

  • ios_base:: out: Συμπεριλάβετε αυτήν τη σημαία όταν θέλετε να γράψετε σε ένα αρχείο.

  • ios_base:: trunc: Συμπεριλάβετε αυτήν τη σημαία αν θέλετε να διαγράψετε τα περιεχόμενα ενός αρχείου πριν γράψετε σε αυτό.

  • ios_base:: app: Συμπεριλάβετε αυτήν τη σημαία αν θέλετε να προσθέσετε στο αρχείο. Είναι το αντίθετο του trunc - δηλαδή, οι πληροφορίες που υπάρχουν ήδη στο αρχείο όταν ανοίγετε θα παραμείνουν εκεί.

Γιατί χρειάζεστε μια σημαία και μια σημαία έξω; Φαίνεται ότι ο υπολογιστής θα πρέπει να γνωρίζει αν γράφετε σε ένα αρχείο ή διαβάζετε από αυτό, ανάλογα (ανάλογα) με το εάν χρησιμοποιείτε το ρεύμα ή το ifstream. Η απάντηση στο γιατί έχετε σημαία και σημαία είναι ότι υπάρχουν και άλλες τάξεις εκτός από την ανάντη και την ifstream.

Οι μεταγλωττιστές που δεν υποστηρίζουν πλήρως το πρότυπο ANSI έχουν μια γενική κλάση στις βιβλιοθήκες τους που ονομάζεται fstream. Οι μεταγλωττιστές που είναι συμβατοί με το ANSI έχουν στις βιβλιοθήκες τους μια κλάση προτύπων που ονομάζεται basic_filebuf και μια κλάση που ονομάζεται filebuf. Εάν χρησιμοποιείτε αυτές τις κατηγορίες, μπορείτε να χρησιμοποιήσετε τις σημαίες εισόδου και εξόδου.

Σηματοδοτώντας το Ios Flags σε C ++ - ανδρείκελα

Η επιλογή των συντακτών

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Χρησιμοποιώντας το Ο έλεγχος εξισορρόπησης λευκού στο Canon EOS 70D σας μπορεί εύκολα και γρήγορα να διορθώσει προβλήματα χρώματος. Οι διαθέσιμες ρυθμίσεις ισορροπίας λευκού απεικονίζονται με τα σύμβολα που εμφανίζονται στον παρακάτω πίνακα. Μπορείτε να δείτε την τρέχουσα ρύθμιση στην οθόνη Ρυθμίσεις λήψης, όπως φαίνεται στο παρακάτω σχήμα. Για να προσαρμόσετε τη ρύθμιση, έχετε ...

Η επιλογή των συντακτών

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Μπορείτε να δημιουργήσετε αντίγραφο TIFF ψηφιακής εικόνας εύκολα. Για παράδειγμα, εάν θέλετε να υποβάλετε μια ψηφιακή φωτογραφία σε μια δημοσίευση εκτύπωσης, χρειάζεστε ένα αρχείο φωτογραφίας μορφής TIFF. Για να δημιουργήσετε ένα αντίγραφο TIFF ενός αρχείου σε ένα πρόγραμμα επεξεργασίας φωτογραφιών:

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Η πρώτη προσπάθεια. Αναμείνετε να βελτιώσετε το περίγραμμα επιλογής σας τουλάχιστον λίγο. Μπορείτε να βελτιώσετε το περίγραμμα σας με διάφορους τρόπους: Αντίστροφη περιγράμματος επιλογής: Απλά χρησιμοποιήστε την εντολή Invert (ή την αντίστοιχη εντολή του προγράμματος). Προσθέστε σε περίγραμμα επιλογής: ...

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

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

Η επιλογή των συντακτών

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Για να εργαστείτε ευκολότερα με το παράθυρο του Μητρώου και να ελέγξετε τον τρόπο εμφάνισής του: Το κουμπί Μετάβαση: Εμφανίζει το παράθυρο διαλόγου Μετάβαση (Go To). Αυτό το παράθυρο διαλόγου σάς επιτρέπει να αναζητήσετε μια συναλλαγή στο παράθυρο "Εγγραφή". Για παράδειγμα, μπορείτε να αναζητήσετε ...

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Σε μεγάλες εταιρείες με εκατοντάδες ή χιλιάδες εργαζόμενοι, δύο ή τρία άτομα δαπανούν μεγάλο μέρος ή και ολόκληρο το χρόνο εργασίας τους με τα στοιχεία που έχουν εγγραφεί στον προϋπολογισμό. Για να επεξεργαστείτε έναν υπάρχοντα προϋπολογισμό στο QuickBooks, ακολουθήστε τα παρακάτω βήματα:

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Από, Προς, Στήλες και Ταξινόμηση. Αυτά τα πλαίσια σας επιτρέπουν επίσης να ελέγχετε τις πληροφορίες που εμφανίζονται στο παράθυρο αναφοράς και την εμφάνιση των πληροφοριών. Για παράδειγμα, μπορείτε να ενημερώσετε το QuickBooks για το χρονικό διάστημα που θέλετε ...