User Tools

Site Tools


cpp:stringstreams

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cpp:stringstreams [2019/05/20 08:22] – created gthanoscpp:stringstreams [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
 ====== String streams ====== ====== String streams ======
  
-Εκτός από τις κλάσεις για ανάγνωση ή εγγραφή από αρχείο ή τα //stdin// και //stdout// η //standard// βιβλιοθήκη της Java κλάσεις για+Εκτός από τις κλάσεις για ανάγνωση ή εγγραφή από αρχείο ή τα //stdin// και //stdout// η //standard// βιβλιοθήκη της C++ παρέχει κλάσεις για ανάγνωση και εγγραφή από ένα //string//. Οι βασικές κλάσεις είναι οι εξής (παρέχονται αντίστοιχες κλάσεις και για //wstrings//, με τα οποία δεν θα ασχοληθούμε): 
 + 
 +  * **istringstream:** //stream// για διάβασμα από ένα //string//
 +  * **ostringstream:** //stream// για γράψιμο σε ένα //string//
 +  * **stringstream:** //stream// για διάβασμα και γράψιμο σε ένα //string//
 + 
 +<code cpp stringstream.cpp> 
 +#include <iostream> 
 +#include <sstream> 
 +#include <string> 
 + 
 +using namespace std; 
 +int main() { 
 +  stringstream sstream; 
 +   
 +  sstream << "Introducing C++ in CE325"; 
 +  string token; 
 +  while( sstream >> token ) { 
 +    cout << token << " "; 
 +  } 
 +  cout << endl; 
 +   
 +  cout << "Stream contents: " << sstream.str() << endl; 
 +  sstream.str(""); 
 +  cout << "Stream contents after clearing: " << sstream.str() << endl; 
 +
 +</code> 
 + 
 +<WRAP tip 80% center round> 
 +Παρατηρήστε ότι καθώς διαβάζουμε το //stream// λέξη-λέξη το περιεχόμενο του //stream// παραμένει αμετάβλητο. Μπορείτε να  
 +  * Λάβετε το περιεχόμενο ενός //stringstream// χρησιμοποιώντας τη μέθοδο ''sstream.str();'' (χωρίς ορίσματα).  
 +  * καθαρίσετε το περιεχόμενο //stringstream// χρησιμοποιώντας τη μέθοδο ''sstream.str("");''
 +</WRAP> 
 + 
 +===== Μετατροπή αριθμών σε strings και αντίστροφα ===== 
 + 
 +Μπορούμε να χρησιμοποιήσουμε ένα //stringstream// προκειμένου να διαβάσουμε ή να γράψουμε ακέραιους ή αριθμούς κινητής υποδιαστολή από ένα string. Το παρακάτω παράδειγμα είναι αποκαλύπτικό: 
 + 
 +<code cpp stringstream.cpp> 
 +#include <iostream> 
 +#include <sstream> 
 +#include <string> 
 + 
 +using namespace std; 
 + 
 +int main() { 
 +  char cexpr[256]; 
 +  double opnd1, opnd2; 
 +  char op; 
 +  cout << "Enter arithmetic expression: "; 
 +  cin.getline(cexpr, 256); 
 +  istringstream sstream(cexpr); 
 +  sstream >> opnd1 >> op >> opnd2; 
 +  double result=0; 
 +  switch(op) { 
 +    case '+': 
 +      result = opnd1 + opnd2; 
 +      break; 
 +    case '-': 
 +      result = opnd1 - opnd2; 
 +      break; 
 +    case '*': 
 +      result = opnd1 * opnd2; 
 +      break; 
 +    case '/': 
 +      result = opnd1 / opnd2; 
 +      break; 
 +    default: 
 +      cout << "ERROR\n"; 
 +      break; 
 +  } 
 +  cout << result << endl; 
 +
 +</code> 
 + 
cpp/stringstreams.1558340537.txt.gz · Last modified: 2019/05/20 07:22 (external edit)