Операции над комплексными числами. Операции ввода-вывода

   
На этом шаге мы рассмотрим особенности использования операций ввода-вывода.

   
В классе complex определены стандартные операторы ввода-вывода << и >> (таблица 1).

Таблица 1. Операции ввода-вывода класса complex<>

ВыражениеОписание
strm << сЗаписывает комплексное число с в выходной поток данных strm
strm >> сЧитает комплексное число с из входного потока данных strm

   
Оператор >> выводит комплексное число в поток данных в следующем формате:

  (вещественная_часть, мнимая_часть)

   
Эквивалентная реализация оператора вывода выглядит так:

  template <class T, class charT, class traits> 
  std::basic_ostream<charT,traits>& 
  operator<< (std::basic_ostream<charT,traits>& strm, 
                     const std::complex<T> c)
  {
    // Временная строка для выполнения вывода с одним аргументом 
    std::basic_ostringstream<charT,traits> s;
    s.flags(strm,flags());         // Копирование флагов потока 
    s.imbue(strm,getloc());        // Копирование локального контеста потока 
    s.precision(strm.precision()); // Копирование точности потока
    // Подготовка итоговой строки
    s <<  '(' << с.real() << '.' << c.imag() << ')';
    // Вывод итоговой строки 
    strm << s.str();
    return strm; 
  }

   
Оператор ввода читает комплексные числа в одном из представленных ниже форматов:

  (вещественная_часть, мнимая_часть) 
  (вещественная_часть) 
  вещественная_часть

   
Если очередные символы во входном потоке данных не соответствуют ни одному из перечисленных форматов, устанавливается флаг ios::failbit,
что может привести к соответствующему исключению.

   
К сожалению, вы не можете задать собственный разделитель для вещественной и мнимой частей комплексного числа. А это означает, что при
использовании запятой в качестве "десятичной точки" (как, например, в Германии или России) вводимые/выводимые данные выглядят довольно
странно. Например, комплексное число с вещественной частью 4.6 и мнимой частью 2.7 записывается в виде: (4,6,2,7).

   
Примеры использования операций ввода-вывода приведены в 411 и 412 шагах.

   
На следующем шаге мы рассмотрим трансцендентные функции.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий