User Tools

Site Tools


cpp:stringstreams

This is an old revision of the document!


String streams

Εκτός από τις κλάσεις για ανάγνωση ή εγγραφή από αρχείο ή τα 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>

    Παρατηρήστε ότι καθώς διαβάζουμε το stream λέξη-λέξη το περιεχόμενο του stream παραμένει αμετάβλητο. Μπορείτε να

    • Λάβετε το περιεχόμενο ενός stringstream χρησιμοποιώντας τη μέθοδο sstream.str(); (χωρίς ορίσματα).
    • καθαρίσετε το περιεχόμενο stringstream χρησιμοποιώντας τη μέθοδο sstream.str(“”);.

    ===== Μετατροπή αριθμών σε 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.1558471714.txt.gz · Last modified: 2019/05/21 19:48 (external edit)