Μετάβαση στο περιεχόμενο

ios (C++)

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

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

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

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

ΌνομαΠεριγραφή
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αγνοεί "τρώει" όλα τα κενά-whitespaces
unitbufΕπιβάλει η έξοδος να επεξεργάζεται όταν η προσωρινή μνήμη αποθήκευσης (buffer) δεν είναι άδεια.
nounitbufΕπιβάλει η έξοδος να μπαίνει σε μια προσωρινή μνήμη (buffer) και να επεξεργάζεται όταν η προσωρινή μνήμη γεμίζει.
Όνομαπεριγραφή
basic_iosΑυτή είναι με κλάση πρότυπο (template class) η οποία ορίζει τον αποθηκευτικό χώρο αλλά και τις μεθόδους διεπαφής για τις ροές εισόδου (κλάση basic_istream) και για τις ροές εξόδου (κλάση basic_ostream). Η ροή εξαρτάται από τις παραμέτρους της κλάσης.
fposΑυτή είναι μια κλάση πρότυπο που περιέχει όλες ιτς πληροφορίες που χρειάζεται κάποιος να προσπελάσει μια τυχαία θέση μέσα σε μια ροή δεδομένων.
ios_baseΑυτή η κλάση περιέχει τον αποθηκευτικό χώρο και τις μεθόδους διεπαφής για είσοδο και έξοδο στις ροές δεδομένων οι οποίες δεν εξαρτώνται από τις παραμέτρους του πρότυπου.

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

#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) [4]:

#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" [2]:

#include <iostream>

using namespace std;

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

   return 1;
}
  1. «<ios> Visual Studio 2010». Microsoft MSDN: Visual Studio 2010. Ανακτήθηκε στις 28 Σεπτεμβρίου 2011.
  2. 1 2 Stanley B. Lippman· Josee Lajoie (1999). C++ Primer (3η έκδοση). Massachusetts: Addison-Wesley. σελίδες 1112-1120. ISBN 0-201-82470-1.
  3. «noskipws». Microsoft MSDN documentation: Visual Studio .NET 2003. Ανακτήθηκε στις 28 Σεπτεμβρίου 2011.
  4. «noskipws». cplusplus.com. Αρχειοθετήθηκε από το πρωτότυπο στις 3 Οκτωβρίου 2011. Ανακτήθηκε στις 28 Σεπτεμβρίου 2011.