User Tools

Site Tools


cpp:osteams

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cpp:osteams [2019/05/19 07:29]
gthanos [Formatting output streams]
cpp:osteams [2020/05/17 18:10]
Line 1: Line 1:
-====== Output Streams ====== 
- 
-Όπως προαναφέρθηκε τα //streams// εισόδου χρησιμοποιούν τον τελεστη ''>>'' (//stream insertion operator//) για την ανάγνωση από το //stream//. Σε αναλογία με τα //input streams//, η //standard// βιβλιοθήκη παρέχει συναρτήσεις υπεφόρτωσης για τους βασικούς τύπους δεδομένων, ενώ δίνεται η δυνατότητα [[cpp:vector_overloading_binary_operators|υπερφόρτωσης]] για όλους τους μη βασικούς τύπους που θα χρειαστεί να κατασκευάσετε στα προγράμματα σας. Το παρακάτω παράδειγμα γραψίματος στην κονσόλα (//stdout//) είναι ενδεικτικό. 
- 
-<code cpp 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; 
-} 
-</code> 
- 
-====== Μεταβάλλοντας τη μορφοποίηση σε ένα stream ====== 
- 
-Μπορείτε να αλλάξετε τη μορφοποίηση σε ένα stream με τους εξής δύο τρόπους: 
-  * χρησιμοποιώντας τις συναρτήσεις μορφοποίησης **[[http://www.cplusplus.com/reference/ios/ios_base/setf/|setf]]** (θέτει ένα //flag// μορφοποίησης) και **[[http://www.cplusplus.com/reference/ios/ios_base/unsetf/|unsetf]]** (μηδενίζει ένα //flag// μορφοποίησης). 
-  * χρησιμοποιώντας //manipulators// μορφοποίησης για το //stream//. 
- 
-===== Χρήση συναρτήσεων μορφοποίησης ===== 
- 
-Ας υποθέσουμε ότι σε ένα //stream// θέλουμε η αριθμοί να εκτυπώνονται σε δεκαεξαδική μορφή. Προκειμένου να το πετύχουμε αυτό, θα πρέπει να κάνουμε τα εξής: 
- 
-<code cpp ostream-format.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-int main() { 
-  cout.setf(std::ios::hex); 
-  //cout.unsetf(std::ios::dec); 
-  cout << 16 << endl; 
-} 
-</code> 
- 
-O παραπάνω κώδικας δεν δουλεύει σωστά, διότι είναι απαραίτητη και η γραμμή που είναι σε σχόλια προκειμένου να δουλέψει σωστά η μορφοποίηση. Στην πράξη, θα πρέπει εκτός από το να θέσουμε το //flag// ''std::ios::hex'' να καθαρίσουμε και το //flag// ''std::ios::dec''. Ο λόγος είναι ότι το  //flag// ''std::ios::dec'' έχει μεγαλύτερη προτεραιότητα, και όσο είναι ενεργό οι αριθμοί εξακολουθούν να εκτυπώνονται σε δεκαδική μορφή. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την παρακάτω μορφή της συνάρτησης **setf**. 
- 
-<code cpp ostream-format.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-int main() { 
-  cout.setf(std::ios::hex, std::ios::basefield); 
-  cout << 16 << endl; 
-} 
-</code> 
  
cpp/osteams.txt · Last modified: 2020/05/17 18:10 (external edit)