Namespaces
Variants

operator<<,>> (std::complex)

From cppreference.net
Определено в заголовочном файле <complex>
template < class T, class CharT, class Traits >

std:: basic_ostream < CharT, Traits > &

operator << ( std:: basic_ostream < CharT, Traits > & os, const std:: complex < T > & x ) ;
(1)
template < class T, class CharT, class Traits >

std:: basic_istream < CharT, Traits > &

operator >> ( std:: basic_istream < CharT, Traits > & is, std:: complex < T > & x ) ;
(2)
1) Записывает в os комплексное число в форме ( real, imaginary ) .
2) Считывает комплексное число из is . Поддерживаемые форматы:
  • real
  • ( real )
  • ( real, imaginary )

где входные данные для real и imaginary должны быть преобразуемы в T .

При возникновении ошибки вызывает is. setstate ( ios_base :: failbit ) .

Содержание

Исключения

Может выбросить std::ios_base::failure при ошибках потока.

Параметры

os - поток вывода символов
is - поток ввода символов
x - комплексное число для вставки или извлечения

Возвращаемое значение

1) os
2) is

Примечания

1) Поскольку запятая может использоваться в текущей локали как десятичный разделитель, вывод может быть неоднозначным. Это можно решить с помощью std::showpoint который принудительно отображает десятичный разделитель.
2) Ввод выполняется в виде серии простых форматированных извлечений. Пропуск пробельных символов одинаков для каждого из них.

Возможная реализация

template<class T, class CharT, class Traits>
basic_ostream<CharT, Traits>&
    operator<<(basic_ostream<CharT, Traits>& o, const complex<T>& x)
{
    basic_ostringstream<CharT, Traits> s;
    s.flags(o.flags());
    s.imbue(o.getloc());
    s.precision(o.precision());
    s << '(' << x.real() << ',' << x.imag() << ')';
    return o << s.str();
}
**Примечание:** Весь код C++ внутри тегов `
` и `` оставлен без изменений, как и требовалось. HTML-разметка и атрибуты также сохранены в оригинальном виде.

Пример

#include <complex>
#include <iostream>
int main()
{
    std::cout << std::complex<double> {3.14, 2.71} << '\n';
}

Возможный вывод:

(3.14,2.71)