Spec-Zone.ru › C++

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

Определено в заголовочном файле <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();
}

Пример

#include <complex>
#include <iostream>

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

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

(3.14,2.71)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/complex/operator_ltltgtgt

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API