complex_io.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:1k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  file = complex_io.cpp
  3. //
  4. #include <ostream>
  5. #include <iostream>
  6. #include "complex_io.h"  
  7. using namespace std;
  8. ostream& operator<<( ostream& s, const std::complex<float>& z)
  9. {
  10.  //s << "(" << z.real() << "," << z.imag() << ")";
  11.  s << z.real() << "," << z.imag();
  12.  return s;
  13. }
  14. ostream& operator<<( ostream& s, const std::complex<double>& z)
  15. {
  16.  //s << "(" << z.real() << "," << z.imag() << ")";
  17.  s << z.real() << "," << z.imag();
  18.  return s;
  19. }
  20. istream& operator>>( istream& s, std::complex<float>& z)
  21. {
  22.   char lpar, rpar, comma;
  23.   float _r, _i;
  24.   for(;;)
  25.     {
  26.     if( (!(s >> lpar >> _r >> comma >> _i >> rpar))
  27.         || (lpar != '(') || (rpar != ')') 
  28.         || (comma != ',') ) 
  29.       {
  30.       // bad stream input
  31.       s.clear();
  32.       cout << "format for complex value is '( double, double)'n"
  33.            << " -- try again" << endl;
  34.       continue;
  35.       }
  36.     break;
  37.     }
  38.   z = std::complex<float>(_r, _i);
  39.   return s;
  40. }
  41. istream& operator>>( istream& s, std::complex<double>& z)
  42. {
  43.   char lpar, rpar, comma;
  44.   double _r, _i;
  45.   for(;;)
  46.     {
  47.     if( (!(s >> lpar >> _r >> comma >> _i >> rpar))
  48.         || (lpar != '(') || (rpar != ')') 
  49.         || (comma != ',') ) 
  50.       {
  51.       // bad stream input
  52.       s.clear();
  53.       cout << "format for complex value is '( double, double)'n"
  54.            << " -- try again" << endl;
  55.       continue;
  56.       }
  57.     break;
  58.     }
  59.   z = std::complex<double>(_r, _i);
  60.   return s;
  61. }