αγγλικά : sstream
γαλλικά : sstream
γερμανικά : sstream
Η sstream είναι μια πρότυπη βιβλιοθήκη της C++ η οποία ορίζει ροές αλφαριθμητικών δεδομένων στην μνήμη. Η βιβλιοθήκη αυτή διαβάζει χαρακτήρες από ένα αντικείμενο αλφαριθμητικών δεδομένων (string object) και δημιουργεί μα ροή αλφαριθμητικών μέσα στην μνήμη όπου ο προγραμματιστής μπορεί να διαβάσει και να γράψει αλφαριθμητικά. Για να χρησιμοποιήσει ο προγραμματιστής την βιβλιοθήκη αυτή θα πρέπει να βάλει το αρχείο επικεφαλίδας <sstream> μέσα στο κώδικα.[1][2].
Μέλη [3]
Ορισμοί Τύπων
Όνομα | Περιγραφή |
---|---|
istringstream |
Ροή εισόδου δεδομένων χαρακτήρων τύπου char. |
ostringstream |
Ροή εξόδου δεδομένων χαρακτήρων τύπου char. |
stringbuf |
Εσωτερική προσωρινή μνήμη (buffer) της ροής δεδομένων τύπου char. |
stringstream |
Ροή εισόδου/εξόδου δεδομένων χαρακτήρων τύπου char. |
wistringstream |
Ροή εισόδου δεδομένων χαρακτήρων τύπου wchar_t. |
wostringstream |
Ροή εξόδου δεδομένων χαρακτήρων τύπου wchar_t. |
wstringbuf |
Εσωτερική προσωρινή μνήμη (buffer) της ροής δεδομένων τύπου wchar_t. |
wstringstream |
Ροή εισόδου/εξόδου δεδομένων χαρακτήρων τύπου wchar_t. |
Μέθοδοι
Όνομα | Περιγραφή |
---|---|
str |
Επιστρέφει σε ένα αντικείμενο αλφαριθμητικού τύπου stl::string από τη ροή δεδομένων τα περιεχόμενα της εσωτερικής προσωρινής μνήμης τύπου stringbuf (string str() const; ). Η ίδια μέθοδος με παράμετρο ένα αλφαριθμητικό τύπου stl::string αντιγράφει τα περιεχόμενα μέσα στο stringbuf (void str (const string & s); ).[4] |
Συναρτήσεις
Όνομα | Περιγραφή |
---|---|
swap |
Ανταλλάσσει τα δεδομένα μεταξύ δύο διαφορετικών αντικειμένων τύπου ροής δεδομένων (στην C++11). |
Κλάσεις
Όνομα | Περιγραφή |
---|---|
basic_stringbuf |
Κλάση-αντικείμενο ορισμού της ροής εισόδου/εξόδου δεδομένων χαρακτήρων. |
basic_istringstream |
Κλάση-αντικείμενο ορισμού της ροής εισόδου δεδομένων χαρακτήρων. |
basic_ostringstream |
Κλάση-αντικείμενο ορισμού της ροής εξόδου δεδομένων χαρακτήρων. |
basic_stringstream |
Κλάση-αντικείμενο ορισμού της εσωτερικής προσωρινής μνήμης (buffer) της ροής δεδομένων χαρακτήρων. |
Παραδείγματα
Στο παρακάτω πρόγραμμα η συνάρτηση file_to_str διαβάζει το εξωτερικό αρχείο που περνάει με παράμετρο μέσα σε ένα αντικείμενο-κλάση ροής δεδομένων εξόδου τύπου ostringstream. Καλώντας την μέθοδο str() του ostringstream επιστρέφουμε ένα αντικείμενο αλφαριθμητικού τύπου string [5]:
#include <string> #include <fstream> #include <sstream> #include <iostream> using namespace std; string file_to_str(string InFile) { ifstream In(InFile.c_str()); if (!In) { string error_str("Δεν μπορώ να διαβάσω το "); return error_str+InFile; } ostringstream buf; char ch; while (buf && In.get(ch)) buf.put(ch); return buf.str(); } int main() { cout << "Το εξωτερικό αρχείο in.txt περιέχει: " << endl << file_to_str("in.txt"); return 0; }
Ένα αντικείμενο τύπου ostringstream μπορεί να χρησιμοποιηθεί για την αυτόματη μορφοποίηση ενός αλφαριθμητικού string. Στο παρακάτω παράδειγμα διαφορετικοί τύποι δεδομένων μορφοποιούνται σε ένα αλφαριθμητικό.
#include <iostream> #include <sstream> using namespace std; int main() { int ival=145; int *ptr_ival= &ival; double dval = 6.433343; double *ptr_dval = &dval; // Η ροή εξόδου δεδομένων η οποία θα γίνει η μορφοποίηση ostringstream format_message; format_message << "ival: " << ival << " με διεύθυνση: " << ptr_ival << " dval: " << dval << " με διεύθυνση: " << ptr_dval << endl; string msg=format_message.str(); // Η έξοδος είναι παρόμοια με το παρακάτω αλφαριθμητικό (η διευθύνσεις μπορεί να διαφέρουν): // ival: 145 με διεύθυνση: 0012FF50 dval: 6.43334 με διεύθυνση: 0012FF34 cout << msg; return 1; }
Ένα αντικείμενο ροής δεδομένων χαρακτήρων (string stream) μπορεί να χρησιμοποιηθεί για μετατροπή ενός τύπου αλφαριθμητικού το οποίος περιέχει ένα αριθμό σε ένα αριθμητικό τύπο δεδομένων [2].
#include <sstream> using namespace std; int main() { // ροή δεδομένων χαρακτήρων εισόδου/εξόδου stringstream ss; string str="123 13.53"; // στείλε το αλφαριθμητικό str μέσα στη ροή δεδομένων ss << str; int i; float f; // μετατρέπει τους δύο αριθμούς ο οποίοι βρίσκονται μέσα στη ροή δεδομένων // στη μεταβλητή i (τύπου ακέραιου) και στη μεταβλητή f (τύπου δεκαδικού) ss >> i >> f; return 0; }
Παραπομπές
ISO/IEC 14882:2003 Programming Languages — C++. [lib.string.streams]/1
Stanley B. Lippman; Josee Lajoie (1999). C++ Primer (3η έκδοση). Massachusetts: Addison-Wesley. σελίδες 1109-1112. ISBN 0-201-82470-1.
«<sstream> Members». Microsoft MSDN. Ανακτήθηκε στις 29 Σεπτεμβρίου 2011.
«stringstream::str». Ιστοσελίδα cplusplus.com. Ανακτήθηκε στις 29 Σεπτεμβρίου 2011.
Stanley B. Lippman, Josee Lajoie (1999). C++ Primer (3η έκδοση). Massachusetts: Addison-Wesley. σελίδες 1109-1110. ISBN 0-201-82470-1.
Εξωτερικοί σύνδεσμοι
C++ reference for std::stringstream
Hellenica World - Scientific Library
Από τη ελληνική Βικιπαίδεια http://el.wikipedia.org . Όλα τα κείμενα είναι διαθέσιμα υπό την GNU Free Documentation License