Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 4
1

Управление потоковым выводом

08.06.2023, 22:13. Показов 1815. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется перегруженный оператор потокового вывода:

C++
1
2
3
4
5
std::ostream& operator<<(std::ostream& os, const CMPLX& what) {
    return os << std::fixed << std::setprecision(2)
        << "re=" << what.re << ' '
        << "im=" << what.im << 'i';
}
Вот, в чем вопрос, можно ли как-то сделать второй вариант оператора с другим форматом вывода?. То есть, вместо "re= 2.1 im=1.2i" выводилось бы, например, "2.1 + 1.2i".
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2023, 22:13
Ответы с готовыми решениями:

Помощь с потоковым вводом-выводом.
Доброго времени суток. можно ли как-нибудь создать/открыть файл для чтения и добавления с помощью ...

Помогите разобраться с потоковым вводом/выводом в С++
как решить эти две задачи: 24.1 Для класса Т1, имеющего два целочисленных компонентных данных а и...

Управление вводом-выводом
Помогите решить задачу. Пусть два процесса осуществляют доступ к одному и тому же файлу, но один...

Управление построчным выводом файла посредством ввода символов клавиатуры
Мой код выводит построчно весь текст из txt. Не подскажете как мне добавить чтоб выводилась след...

2
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
09.06.2023, 01:11 2
Лучший ответ Сообщение было отмечено BuratinoPetr как решение

Решение

BuratinoPetr, есть больше одного способа это сделать, но я покажу только один. Способ заключается в создании собственного манипулятора потока:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <iomanip>
 
// Библиотечный код
/// Начало описания специального манипулятора для смены формата вывода
/// (если для типа не поддерживается такой режим, то будет ошибка компиляции)
template <typename Stream>
class plus_format
{
public:
    explicit plus_format(Stream& stream)
        : m_stream(stream)
    {}
    Stream& stream() { return m_stream; }
 
private:
    Stream& m_stream;
};
 
template <typename Stream>
plus_format<Stream> plus_formatter(Stream& stream)
{
    return plus_format<Stream>(stream);
}
template <typename Stream>
plus_format<Stream> operator<<(Stream& os, plus_format<Stream>(*fmt)(Stream&))
{
    return fmt(os);
}
/// Конец описания манипулятора
 
 
// Пользовательский код
class CMPLX
{
public:
    explicit CMPLX(double r, double i = 0) : re(r), im(i)
    { }
 
    friend std::ostream& operator<<(std::ostream& os, const CMPLX& what);
    friend std::ostream& operator<<(plus_format<std::ostream> os, const CMPLX& what);
private:
    double re;
    double im;
};
 
std::ostream& operator<<(std::ostream& os, const CMPLX& what) {
    return os << std::fixed << std::setprecision(2)
        << "re=" << what.re << ' '
        << "im=" << what.im << 'i';
}
 
std::ostream& operator<<(plus_format<std::ostream> os, const CMPLX& what) {
    return os.stream() << std::fixed << std::setprecision(2)
        << what.re << " + "
        << what.im << 'i';
}
 
int main()
{
    CMPLX cmplx(2.1, 1.2);
 
    std::cout << cmplx << std::endl;
    std::cout << plus_formatter << cmplx << std::endl;
}
Посмотреть как работает можно здесь: https://wandbox.org/permlink/xWDWTDr6A8tY16sP

Добавлено через 2 минуты
PS. В деталях реализации могут быть нюансы, показанный код не является каким-то эталоном. Правильно будет его рассматривать как демонстрацию идеи.
3
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
10.06.2023, 19:58 3

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
идеи
концепции



Добавлено через 4 часа 50 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
class plus_format
однако элегантное решение, интересно в std так же манипуляторы реализованы?
0
10.06.2023, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2023, 19:58
Помогаю со студенческими работами здесь

Составить алгоритм и программу для алгоритмов.Задачу сделать с потоковым вводом исходных данных и выводом результатов
Составить алгоритм и программу для алгоритмов.Задачу сделать с потоковым вводом исходных данных и...

Управление вводом-выводом
Затабулировать функцию Z=f(x,y) с шагами Dx и Dy внутри прямоугольника xÎ,yÎ и области...

Управление текстовым выводом
При нажатие любого символа программа печатает его случайном незанятом месте окна.Если все окно...

Управление выводом контролов в форме
На форме есть две кнопки В зависимости от ситуации у них меняется положение на форме,...

Библиотека CRT,управление текстовым выводом
Задача:При нажатие любого символа программа печатает его в случайном незанятом месте окна.Если всё...

Управление выводом и скрытием контролов для карусели
Подскажите как можно на событие mouseenter/mouseleave навесить обработчики так, чтобы спрятанные...

Управление выводом и скрытием окна с помощью кнопок
Вот то, что нужно сделать и желательно, чтобы было понятно самому: Есть 4 кнопки с разными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru