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) Записывает в
2) Считывает комплексное число из os комплексное число в виде (real, imaginary).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