This is an old revision of the document!
Table of Contents
Output Streams
Όπως προαναφέρθηκε τα streams εισόδου χρησιμοποιούν τον τελεστη »
(stream insertion operator) για την ανάγνωση από το stream. Σε αναλογία με τα input streams, η standard βιβλιοθήκη παρέχει συναρτήσεις υπεφόρτωσης για τους βασικούς τύπους δεδομένων, ενώ δίνεται η δυνατότητα υπερφόρτωσης για όλους τους μη βασικούς τύπους που θα χρειαστεί να κατασκευάσετε στα προγράμματα σας. Το παρακάτω παράδειγμα γραψίματος στην κονσόλα (stdout) είναι ενδεικτικό.
- stdout.cpp
#include <iostream> using namespace std; int main() { string str("Welcome C++"); const double PI = 3.14159; const int SIZE = 256; cout << str << " in CE325 course." << endl; cout << "Constant PI: " << PI << endl; cout << "SIZE is: " << SIZE << endl; }
Μεταβάλλοντας τη μορφοποίηση σε ένα stream
Μπορείτε να αλλάξετε τη μορφοποίηση σε ένα stream με τους εξής δύο τρόπους:
- χρησιμοποιώντας μορφοποιητών (manipulators) για το stream.
Χρήση συναρτήσεων μορφοποίησης
Ας υποθέσουμε ότι σε ένα stream θέλουμε η αριθμοί να εκτυπώνονται σε δεκαεξαδική μορφή. Προκειμένου να το πετύχουμε αυτό, θα πρέπει να κάνουμε τα εξής:
- ostream-format.cpp
#include <iostream> using namespace std; int main() { cout.setf(std::ios::hex); //cout.unsetf(std::ios::dec); cout << 16 << endl; }
O παραπάνω κώδικας δεν δουλεύει σωστά, διότι είναι απαραίτητη και η γραμμή που είναι σε σχόλια προκειμένου να δουλέψει σωστά η μορφοποίηση. Στην πράξη, θα πρέπει εκτός από το να θέσουμε το flag std::ios::hex
να καθαρίσουμε και το flag std::ios::dec
. Ο λόγος είναι ότι το flag std::ios::dec
έχει μεγαλύτερη προτεραιότητα, και όσο είναι ενεργό οι αριθμοί εξακολουθούν να εκτυπώνονται σε δεκαδική μορφή. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την παρακάτω μορφή της συνάρτησης setf.
- ostream-format.cpp
#include <iostream> using namespace std; int main() { cout.setf(std::ios::hex, std::ios::basefield); cout << 16 << endl; }
Η συγκεκριμένη μορφή της set, στην 1η παράμετρο λαμβάνει τα flags που θα ενεργοποιηθούν (εάν υπάρχουν περισσότερα του ενός, χρησιμοποιείτε τον δυαδικό τελεστή OR (|)) και στην 2η παράμετρο λαμβάνει το group των flags τα οποία θα μηδενιστούν, πριν ενεργοποιηθούν τα flags που ορίζονται στην 1η παράμετρο.