C++ Tutorial/File Stream/stringstream

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Demonstrate string streams

#include <iostream> 
#include <sstream> 
using namespace std; 
 
int main() 
{ 
  stringstream s("This is initial string."); 
 
  // get string 
  string str = s.str(); 
  cout << str << endl; 
 
  // output to string stream  
  s << "Numbers: " << 10 << " " << 123.2; 
 
  int i; 
  double d; 
  s >> str >> i >> d; 
  cout << str << " " << i << " " << d; 
 
  return 0; 
}
This is initial string.
Numbers: 10 123.2

stringstream::str( empty string): Empty the string

#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;
int main( ) {
  stringstream ss;
  ss << "string " << 9 << 1.2;
  cout << ss.str( ) << endl;
  ss.str("");                  // Empty the string
  cout << ss.str( ) << endl;
}
string 91.2

stringstream::str( ) returns a string

#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;
int main( ) {
  stringstream ss;
  ss << "string " << 9 << 1.2;
  cout << ss.str( ) << endl;   // stringstream::str( ) returns a string
}
string 91.2

Use stringstream to parse a number

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
double parse(const string& str) {
  stringstream ss(str);
  double d = 0;
  ss >> d;
  if (ss.fail( )) {
    throw (str +" is not a number");
  }
  return (d);
}
int main( ) {
  try {
    cout << parse("1.234e5") << endl;
    cout << parse("6.02e-2") << endl;
    cout << parse("asdf") << endl;
  }
  catch (string& e) {
    cerr << e << endl;
  }
}
123400
0.0602
asdf is not a number