User Tools

Site Tools


cpp:stringstreams

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:stringstreams [2019/05/20 09:14] gthanoscpp:stringstreams [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 3: Line 3:
 Εκτός από τις κλάσεις για ανάγνωση ή εγγραφή από αρχείο ή τα //stdin// και //stdout// η //standard// βιβλιοθήκη της C++ παρέχει κλάσεις για ανάγνωση και εγγραφή από ένα //string//. Οι βασικές κλάσεις είναι οι εξής (παρέχονται αντίστοιχες κλάσεις και για //wstrings//, με τα οποία δεν θα ασχοληθούμε): Εκτός από τις κλάσεις για ανάγνωση ή εγγραφή από αρχείο ή τα //stdin// και //stdout// η //standard// βιβλιοθήκη της C++ παρέχει κλάσεις για ανάγνωση και εγγραφή από ένα //string//. Οι βασικές κλάσεις είναι οι εξής (παρέχονται αντίστοιχες κλάσεις και για //wstrings//, με τα οποία δεν θα ασχοληθούμε):
  
-  * **istringstream:** //stream// για διάβασμα από ένα //string/+  * **istringstream:** //stream// για διάβασμα από ένα //string//. 
-  * **ostringstream:** //stream// για γράψιμο σε ένα //string/.+  * **ostringstream:** //stream// για γράψιμο σε ένα //string//.
   * **stringstream:** //stream// για διάβασμα και γράψιμο σε ένα //string//.   * **stringstream:** //stream// για διάβασμα και γράψιμο σε ένα //string//.
  
Line 22: Line 22:
   }   }
   cout << endl;   cout << endl;
 +  
 +  cout << "Stream contents: " << sstream.str() << endl;
 +  sstream.str("");
 +  cout << "Stream contents after clearing: " << sstream.str() << endl;
 } }
 </code> </code>
 +
 +<WRAP tip 80% center round>
 +Παρατηρήστε ότι καθώς διαβάζουμε το //stream// λέξη-λέξη το περιεχόμενο του //stream// παραμένει αμετάβλητο. Μπορείτε να 
 +  * Λάβετε το περιεχόμενο ενός //stringstream// χρησιμοποιώντας τη μέθοδο ''sstream.str();'' (χωρίς ορίσματα). 
 +  * καθαρίσετε το περιεχόμενο //stringstream// χρησιμοποιώντας τη μέθοδο ''sstream.str("");''.
 +</WRAP>
  
 ===== Μετατροπή αριθμών σε strings και αντίστροφα ===== ===== Μετατροπή αριθμών σε strings και αντίστροφα =====
  
-Μπορούμε να χρησιμοποιήσουμε ένα //stringstream// προκειμένου να διαβάσουμε αριθμούς από ένα string ή να γράψουμε αριθμούσε σε ένα //string//, όπως παρακάτω:+Μπορούμε να χρησιμοποιήσουμε ένα //stringstream// προκειμένου να διαβάσουμε ή να γράψουμε ακέραιους ή αριθμούς κινητής υποδιαστολή από ένα string. Το παρακάτω παράδειγμα είναι αποκαλύπτικό:
  
 <code cpp stringstream.cpp> <code cpp stringstream.cpp>
Line 37: Line 47:
  
 int main() { int main() {
-  string expr;+  char cexpr[256]; 
 +  double opnd1, opnd2; 
 +  char op;
   cout << "Enter arithmetic expression: ";   cout << "Enter arithmetic expression: ";
-  cin >> expr+  cin.getline(cexpr, 256); 
-  istringstream stream(expr); +  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> </code>
 +
 +
cpp/stringstreams.1558343666.txt.gz · Last modified: 2019/05/20 08:14 (external edit)