cpp:osteams
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:osteams [2019/05/19 08:14] – [Μεταβάλλοντας τη μορφοποίηση σε ένα stream] gthanos | cpp:osteams [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Output Streams ====== | ====== Output Streams ====== | ||
| - | Όπως προαναφέρθηκε τα //streams// εισόδου χρησιμοποιούν τον τελεστη '' | + | Όπως προαναφέρθηκε τα //streams// εξόδου χρησιμοποιούν τον τελεστη '' |
| <code cpp stdout.cpp> | <code cpp stdout.cpp> | ||
| Line 19: | Line 19: | ||
| </ | </ | ||
| - | ====== Μεταβάλλοντας τη μορφοποίηση σε ένα stream ====== | + | ====== Μεταβολή της μορφοποίησης σε ένα stream ====== |
| Μπορείτε να αλλάξετε τη μορφοποίηση σε ένα stream με τους εξής δύο τρόπους: | Μπορείτε να αλλάξετε τη μορφοποίηση σε ένα stream με τους εξής δύο τρόπους: | ||
| - | * χρησιμοποιώντας τις συναρτήσεις μορφοποίησης **[[http:// | + | * χρησιμοποιώντας τις συναρτήσεις μορφοποίησης **[[http:// |
| - | * χρησιμοποιώντας μορφοποιητών (// | + | * χρησιμοποιώντας μορφοποιητές (// |
| ===== Χρήση συναρτήσεων μορφοποίησης ===== | ===== Χρήση συναρτήσεων μορφοποίησης ===== | ||
| Line 29: | Line 29: | ||
| Ας υποθέσουμε ότι σε ένα //stream// θέλουμε η αριθμοί να εκτυπώνονται σε δεκαεξαδική μορφή. Προκειμένου να το πετύχουμε αυτό, θα πρέπει να κάνουμε τα εξής: | Ας υποθέσουμε ότι σε ένα //stream// θέλουμε η αριθμοί να εκτυπώνονται σε δεκαεξαδική μορφή. Προκειμένου να το πετύχουμε αυτό, θα πρέπει να κάνουμε τα εξής: | ||
| - | <code cpp ostream-format.cpp> | + | <code cpp ostream-setf.cpp> |
| #include < | #include < | ||
| using namespace std; | using namespace std; | ||
| Line 40: | Line 40: | ||
| </ | </ | ||
| - | O παραπάνω κώδικας δεν δουλεύει σωστά, διότι είναι απαραίτητη και η γραμμή που είναι σε σχόλια | + | O παραπάνω κώδικας δεν δουλεύει σωστά, διότι είναι απαραίτητη και η γραμμή που είναι σε σχόλια. Στην πράξη, θα πρέπει εκτός από το να θέσουμε το //flag// '' |
| - | <code cpp ostream-format.cpp> | + | <code cpp ostream-setf2.cpp> |
| #include < | #include < | ||
| using namespace std; | using namespace std; | ||
| Line 48: | Line 48: | ||
| int main() { | int main() { | ||
| cout.setf(std:: | cout.setf(std:: | ||
| - | cout << 16 << endl; | + | cout << " |
| } | } | ||
| </ | </ | ||
| Line 54: | Line 54: | ||
| Η συγκεκριμένη μορφή της **set**, στην 1η παράμετρο λαμβάνει τα //flags// που θα ενεργοποιηθούν (εάν υπάρχουν περισσότερα του ενός, χρησιμοποιείτε τον δυαδικό τελεστή OR (|)) και στην 2η παράμετρο λαμβάνει το //group// των //flags// τα οποία θα μηδενιστούν, | Η συγκεκριμένη μορφή της **set**, στην 1η παράμετρο λαμβάνει τα //flags// που θα ενεργοποιηθούν (εάν υπάρχουν περισσότερα του ενός, χρησιμοποιείτε τον δυαδικό τελεστή OR (|)) και στην 2η παράμετρο λαμβάνει το //group// των //flags// τα οποία θα μηδενιστούν, | ||
| + | ===== Χρήση μορφοποιητών (manipulators) ===== | ||
| + | |||
| + | Η C++ δίνει τη δυνατότητα χρήσης μορφοποιητών, | ||
| + | |||
| + | <code cpp ostream-manipulators.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | int main() { | ||
| + | cout << std::hex << 16 << endl; | ||
| + | cout << 16 << endl; | ||
| + | cout << std::oct << 16 << endl; | ||
| + | cout << 16 << endl; | ||
| + | cout << std::dec << 16 << endl; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Στη συγκεκριμένη περίπτωση ο μορφοποιητής, | ||
| + | |||
| + | ===== Επιλογές μορφοποίησης ενός ostream ===== | ||
| + | |||
| + | Τα βασικά //flags// και οι βασικοί μορφοποιητές για τα //flags// αυτά δίνονται παρακάτω: | ||
| + | |||
| + | ==== std:: | ||
| + | |||
| + | ^ Group ^ Flag ^ Επεξήγηση ^ | ||
| + | | | '' | ||
| + | |||
| + | ^ Μορφοποιητής ^ Επεξήγηση ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | <code cpp boolalpha.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | int main() { | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== std:: | ||
| + | |||
| + | ^ Group ^ Flag ^ Επεξήγηση ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | ^ Μορφοποιητής ^ Επεξήγηση ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | |||
| + | <code cpp ostream-basefield.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | int main() { | ||
| + | cout.setf(std:: | ||
| + | cout << 30 << endl; | ||
| + | | ||
| + | cout.setf(std:: | ||
| + | cout << 30 << endl; | ||
| + | | ||
| + | cout.setf(std:: | ||
| + | cout << 30 << endl; | ||
| + | | ||
| + | cout << std::dec << 30 << endl; | ||
| + | cout << std::oct << 30 << endl; | ||
| + | cout << std::hex << 30 << endl; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== std:: | ||
| + | |||
| + | Εκτύπωση αριθμών κινητής υποδιαστολής | ||
| + | |||
| + | ^ Group ^ Flag ^ Επεξήγηση ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | |||
| + | ^ Μορφοποιητής ^ Επεξήγηση ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | <code cpp ostream-floatfield.cpp> | ||
| + | #include < | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | int main() { | ||
| + | | ||
| + | /* no special formatting specified */ | ||
| + | cout << 0.00000123456789012345678 << endl; | ||
| + | cout << 0.0000123456789012345678 << endl; | ||
| + | cout << 0.000123456789012345678 << endl; | ||
| + | cout << 0.00123456789012345678 << endl; | ||
| + | cout << 0.0123456789012345678 << endl; | ||
| + | cout << 0.123456789012345678 << endl; | ||
| + | cout << 123.4567890123456789 << endl; | ||
| + | cout << 123456.7890123456789 << endl; | ||
| + | cout << 123456789.0123456789 << endl; | ||
| + | | ||
| + | cout << std:: | ||
| + | cout << 30 << " " << | ||
| + | cout << std:: | ||
| + | cout << 30 << " " << 1000L << " " << 1000.00 << " " << 3.14159; | ||
| + | cout << endl; | ||
| + | | ||
| + | cout << std::fixed << endl; | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | cout << std:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <WRAP tip 80% center round> | ||
| + | Εάν δεν ορίσετε δικές σας παραμέτρους εκτύπωσης, | ||
| + | * Εάν ο αριθμός έχει ακέραιο μέρος μεγαλύτερο απο 7 ψηφία, τότε εκτυπώνεται σε εκθετική μορφή. | ||
| + | * Εάν ο αριθμός έχει ακέραιο μέρος μηδέν και δεκαδικό μέρος με τέσσερα (4) ή περισσότερα μηδενικά στην αρχή εκτυπώνεται σε εκθετική μορφή. | ||
| + | * Σε αντίθετη περίπτωση, | ||
| + | * ο αριθμός των εκτυπωσιμων ψηφίων είναι 7, χωρίς να υπολογίζουμε το πρόσημο, | ||
| + | * Εάν το δεκαδικό μέρος του αριθμού είναι μεγαλύτερο από όσο μπορεί να εκτυπωθεί από την παραπάνω σύμβαση, | ||
| + | </ | ||
cpp/osteams.1558253681.txt.gz · Last modified: 2019/05/19 07:14 (external edit)
