ios (C++)
C++ Πρότυπη βιβλιοθήκη |
---|
Τυπική Βιβλιοθήκη Προτύπων (STL) |
C++11 |
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;
}
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ «<ios> Visual Studio 2010». Microsoft MSDN: Visual Studio 2010. Ανακτήθηκε στις 28 Σεπτεμβρίου 2011.
- ↑ 2,0 2,1 Stanley B. Lippman· Josee Lajoie (1999). C++ Primer (3η έκδοση). Massachusetts: Addison-Wesley. σελίδες 1112-1120. ISBN 0-201-82470-1.
- ↑ «noskipws». Microsoft MSDN documentation: Visual Studio .NET 2003. Ανακτήθηκε στις 28 Σεπτεμβρίου 2011.
- ↑ «noskipws». cplusplus.com. Αρχειοθετήθηκε από το πρωτότυπο στις 3 Οκτωβρίου 2011. Ανακτήθηκε στις 28 Σεπτεμβρίου 2011.