Ios (C++)

Το ios είναι μια πρότυπη βιβλιοθήκη της C++, η οποία ορίζει διάφορους τύπους και συναρτήσεις για την λειτουργικότητα των iostreams. Το αρχείο επικεφαλίδας #include <ios> αυτόματα χρησιμοποιείται από την βιβλιοθήκη iostream και οι προγραμματιστές πολύ σπάνια το καλούν μέσα στο κώδικά τους.

 Μέλη 
 Ορισμοί τύπων 
 Όνομα  Περιγραφήios  Υποστήριξη στην κλάση ios από την παλαιότερη βιβλιοθήκη iostream.streamoff  Υποστήριξη εσωτερικών λειτουργιών.streampos  Αποθηκεύει την τωρινή θέση ενός δείκτη μέσα στην προσωρινή μνήμη (buffer) ή τη θέση μέσα στο αρχείο. streamsize  Ορίζει το μέγεθος της ροής δεδομένων.wios  Υποστήριξη της κλάσης wios από τη παλαιότερη βιβλιοθήκη iostream.wstreampos   Αποθηκεύει την τωρινή θέση ενός δείκτη μέσα στην προσωρινή μνήμη (buffer) ή τη θέση μέσα στο αρχείο (η wstreampos αναφέρεται σε ροή δεδομένων τύπου wchar_t - wide char).

 Επιλογές 

Οι παρακάτω επιλογές εφαρμόζονται σε ένα αντικείμενο ροής δεδομένων (stream object) και δεν επιβάλουν τα δεδομένα να γραφτούν ή να διαβαστούν αλλά αλλάζουν σημαίες μέσα στο αντικείμενο της ροής.

 Όνομα  Περιγραφήboolalpha  Ορίζει τις λογικές μεταβλητές τύπου bool να εμφανίζονται ως "true" (αληθές) ή "false" (ψευδές) με μορφή αλφαριθμητικών μέσα στην ροή δεδομένων.noboolalpha  Ορίζει τις λογικές μεταβλητές τύπου bool να εμφανίζονται ως 1 ή 0 μέσα στην ροή δεδομένων.showbase  Ορίζει την εμφάνιση της βάσης αριθμητικού συστήματος στο οποίο ανήκει ο αριθμός.noshowbase  Απενεργοποιεί την εμφάνιση της βάσης (αριθμητικού συστήματος αριθμού).showpoint  Εμφανίζει ακέραιο μέρος δεκαδικού αριθμού μαζί με τα δεκαδικά ψηφία, ακόμη και στην περίπτωση που τα δεκαδικά ψηφία είναι μηδέν. noshowpoint  Εμφανίζει μόνο τα ψηφία του δεκαδικού μέρους τα οποία δεν είναι μηδέν σε ένα δεκαδικό αριθμό.showpos  Ορίζει οι θετικοί αριθμοί να εμφανίζονται με πρόσημο.noshowpos  Επιβάλει οι θετικοί αριθμοί να μην εμφανίζουν πρόσημο.skipws  Επιβάλει όλα τα κενά (whitespaces: κενό ' ', tab '\t', newline '\n') να αγνοούνται.noskipws  Επιβάλει να μην αγνοούνται από το διάβασμα τα κενά.uppercase  Επιβάλει τα δεκαεξαδικά ψηφία και ο εκθέτης σε επιστημονικό συμβολισμό να εμφανίζεται σε κεφαλαία ψηφία (0X και Ε).nouppercase  Ορίζει τα δεκαεξαδικά ψηφία και ο εκθέτης σε ένα επιστημονικό συμβολισμό να εμφανίζονται σε πεζά ψηφία (0x και e). dec  Ορίζει αν οι ακέραιες μεταβλητές τύπου int εμφανίζονται σε 10αδικό συμβολισμό.hex  Ορίζει αν οι ακέραιες μεταβλητές εμφανίζονται σε 16αδικό συμβολισμό.oct  Ορίζει οι ακέραιες μεταβλητές να εμφανίζονται σε οκταδικό συμβολισμό.left  Ορίζει όταν το κείμενο δεν έχει πλάτος όπως αυτό έχει οριστεί στην έξοδο να εμφανίζεται στην ροή με κενό στα αριστερά.right  Ορίζει ώστε το κείμενο του οποίου το πλάτος είναι μικρότερο από πλάτος το οποίο  έχει οριστεί για την  έξοδο, να εμφανίζεσαι στη ροή με κενά από τα δεξιά.internal  Ορίζει αν το πρόσημο του αριθμού βρίσκεται στα αριστερά και ο αριθμός στα δεξιά.fixed  Ορίζει αν οι μεταβλητές δεκαδικών αριθμών τύπου float εμφανίζονται με σταθερό μέγεθος δεκαδικών ψηφίων. scientific  Ορίζει οι δεκαδικοί αριθμοί να εμφανίζονται με επιστημονικό συμβολισμό. flush  Αδειάζει την προσωρινή μνήμη εξόδου. ends  Εισάγει ένα χαρακτήρα τύπου null '\0' και κατόπιν αδειάζει την προσωρινή μνήμη εξόδου. endl  Εισάγει ένα χαρακτήρα αλλαγής γραμμής '\n' και κατόπιν αδειάζει την προσωρινή μνήμη εξόδου.ws  αγνοεί "τρώει" όλα τα κενά-whitespacesunitbuf  Επιβάλει η έξοδος να επεξεργάζεται όταν η προσωρινή μνήμη αποθήκευσης (buffer) δεν είναι άδεια. nounitbuf  Επιβάλει η έξοδος να μπαίνει σε μια προσωρινή μνήμη (buffer) και να επεξεργάζεται όταν η προσωρινή μνήμη γεμίζει.

 Κλάσεις 
 Όνομα  περιγραφήbasic_ios  Αυτή είναι με κλάση πρότυπο (template class) η οποία ορίζει τον αποθηκευτικό χώρο αλλά και τις μεθόδους διεπαφής για τις ροές εισόδου (κλάση basic_istream) και για τις ροές εξόδου (κλάση basic_ostream). Η ροή εξαρτάται από τις παραμέτρους της κλάσης. fpos  Αυτή είναι μια κλάση πρότυπο που περιέχει όλες ιτς πληροφορίες που χρειάζεται κάποιος να προσπελάσει μια τυχαία θέση μέσα σε μια ροή δεδομένων.ios_base  Αυτή η κλάση περιέχει τον αποθηκευτικό χώρο και τις μεθόδους διεπαφής για είσοδο και έξοδο στις ροές δεδομένων οι οποίες δεν εξαρτώνται από τις παραμέτρους του πρότυπου.

 Παραδείγματα 

Στο παρακάτω παράδειγμα επιλέγουμε σε μια ροή δεδομένων εισόδου από το πληκτρολόγιο να αγνοηθούν τα whitespaces (χαρακτήρες τύπου απλού κενού, tab '\t' και αλλαγής γραμμής '\n'). Η αγνόηση των whitespaces είναι προεπιλογή στις ροές δεδομένων.:

#include <iostream>    // το iostream συμπεριλαμβάνει και το #include <ios>
#include <string>

using namespace std;

int main() {
   string s1, s2, s3;
   cout << "Είσοδος τρία αλφαριθμητικά: ";
   cin >> skipws >> s1 >> s2 >> s3;            // με το skipws επιβάλλεται στην ροή εισόδου από το πληκτρολόγιο
                                               // cin να αγνοηθούν τα τυχόν whitespaces που θα εισάγει ο χρήστης
                                               // στο stream είναι προεπιλεγμένο το skipws
   cout << "." << s1  << "." << endl;          
   cout << "." << s2 << "." << endl;
   cout << "." << s3 << "." << endl; 

   return 0;
}

Στο παρακάτω παράδειγμα επιλέγουμε να μην αγνοούνται τα whitespaces και θα δούμε διάβασμα από μια ροή δεδομένων μέσω μνήμης (string stream) :

#include <iostream>       // συμπεριλαμβάνει το #include <ios> και για το cin, cout
#include <sstream>        // για την ροή δεδομένων αλφαριθμητικού (στη μνήμη) istringstream

using namespace std;

int main () {
  char a, b, c, d;

  istringstream iss ("\n\t 123    4");
  iss >> noskipws >> a >> b >> c >> d;    // διάβασέ τα όλα, συμπεριλαμβανομένων και των whitespace

  // ισοδυναμεί με cout << "\n << '-' << '\t' << '-' << ' ' << '-' << '1' << endl;
  cout << a << "-" << b << "-" << c << "-"  << d << endl;

  iss >> skipws >> a >> b >> c;           // αγνοούνται τα whitespaces
  cout << a << b << c << endl;            // εμφανίζεται το "234" και όχι το "23 "

  return 0;
}

Στο παρακάτω παράδειγμα αλλάζουμε την ροή εξόδου ώστε στην έξοδο να εμφανίζεται η λογική μεταβλητή με το αλφαριθμητικό "true" ή "false" και όχι ως "1" ή "0" :

#include <iostream>

using namespace std;

int main() {
   bool bool_variable=true;
   cout << "Η έξοδος της λογικής μεταβλητής είναι: " << bool_variable << endl;    // εμφανίζει "1"
   cout << "Η έξοδος της λογικής μεταβλητής μετά την σημαία boolalpha: "  
        << boolalpha << bool_variable;                                            // εμφανίζει "true"

   return 1;
}

 Παραπομπές 

Κατηγορία:C++ (STL)

en:Ios (C++)