cpp/io/basic stringstream/str: differenze tra le versioni
P12 (Discussione | contributi) (Import from dokuwiki) |
P12 (Discussione | contributi) m (una revisione importata: Import from Dokuwiki) |
Versione delle 02:55, 1 mag 2012
Sintassi:
#include <sstream> void str( const string& s ); string str();
La funzione str() può essere usata in due modi: il primo per avere una copia della stringa che viene manipolata all'interno dello stream:
ostringstream stream1; stream1 << "Testing!" << endl; cout << stream1.str();
Nel secondo str() può essere usata per copiare una stringa dentro lo stream. Questo metodo è utile soprattutto con gli input streams. Esempio:
istringstream stream1; string string1 = "25"; stream1.str(string1);
N.B.: Questa funzione lascia i puntatori "get" e "put" impostati a 0. Questo talvolta conduce a risultati confondenti quando si inizializza una stringstream per operazioni bidirezionali.
str() è utile anche quando è necessario azzerare lo strem cosicchè possa essere riutilizzato. __Attenzione__: la funzione membro clear() **non** cancella i contenuti dell'oggetto stringa contenuto nello stream, semplicemente si limita ad effettuare il clear dello stato dell'oggetto ios, cioè esegue la funzione equivalente di basic_ios::clear().
istringstream stream1; float num; // use it once string string1 = "25 1 3.235\n1111111\n222222"; stream1.str(string1); while( stream1 >> num ) cout << "num: " << num << endl; // displays numbers, one per line // use the same string stream again with str() string string2 = "1 2 3 4 5 6 7 8 9 10"; stream1.clear(); // not what you think! But still required to clear the stream's IO state stream1.str(string2); while( stream1 >> num ) cout << "num: " << num << endl; // displays numbers, one per line
Argomenti collegati: rdbuf, C++ I/O Streams