complex_io.cpp

来自「《无线通信系统仿真——c++使用模型》这本书的源代码」· C++ 代码 · 共 67 行

CPP
67
字号
//
//  file = complex_io.cpp
//

#include <ostream>
#include <iostream>

#include "complex_io.h"  
using namespace std;

ostream& operator<<( ostream& s, const std::complex<float>& z)
{
 //s << "(" << z.real() << "," << z.imag() << ")";
 s << z.real() << "," << z.imag();
 return s;
}

ostream& operator<<( ostream& s, const std::complex<double>& z)
{
 //s << "(" << z.real() << "," << z.imag() << ")";
 s << z.real() << "," << z.imag();
 return s;
}

istream& operator>>( istream& s, std::complex<float>& z)
{
  char lpar, rpar, comma;
  float _r, _i;
  for(;;)
    {
    if( (!(s >> lpar >> _r >> comma >> _i >> rpar))
        || (lpar != '(') || (rpar != ')') 
        || (comma != ',') ) 
      {
      // bad stream input
      s.clear();
      cout << "format for complex value is '( double, double)'\n"
           << " -- try again" << endl;
      continue;
      }
    break;
    }
  z = std::complex<float>(_r, _i);
  return s;
}
istream& operator>>( istream& s, std::complex<double>& z)
{
  char lpar, rpar, comma;
  double _r, _i;
  for(;;)
    {
    if( (!(s >> lpar >> _r >> comma >> _i >> rpar))
        || (lpar != '(') || (rpar != ')') 
        || (comma != ',') ) 
      {
      // bad stream input
      s.clear();
      cout << "format for complex value is '( double, double)'\n"
           << " -- try again" << endl;
      continue;
      }
    break;
    }
  z = std::complex<double>(_r, _i);
  return s;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?