Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Как правильно перегружать потоковый оператор вывода в файл? - C++

19.06.2012, 07:13. Просмотров 472. Ответов 3
Метки нет (Все метки)

Нужен только прототип оператора, реализацию сделаю сам. Обязательное требование: должна поддерживаться "цепная" форма:
C++
1
Log<<"<variable>"<<std::endl<<"<value>"<<variable<<"</value>"<<std::endl<<"<adress>"<<(void *)&variable<<"</adress>"<<std::endl<<"</variable>"<<std::endl;
. Я перегрузил, но как то косо, в результате слева поддерживалось только имя потока, но не другой оператор вывода в него. То есть
C++
1
2
3
4
5
Log<<"<variable>"<<std::endl<<"<value>";
Log<<variable;
Log<<"</value>"<<std::endl<<"<adress>";
Log<<(void *)&variable;
Log<<"</adress>"<<std::endl<<"</variable>"<<std::endl;
компилятор хавал, а на
C++
1
Log<<"<variable>"<<std::endl<<"<value>"<<variable<<"</value>"<<std::endl<<"<adress>"<<(void *)&variable<<"</adress>"<<std::endl<<"</variable>"<<std::endl;
ругался, как на китайскую грамоту с абройкадаброй вперемешку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 07:13     Как правильно перегружать потоковый оператор вывода в файл?
Посмотрите здесь:

как правильно перегружать оператор? - C++
Есть такой класс. class LampaO { private: int svet; int job; int pro; public: LampaO(int voltage=220); int IfJob();

Как перегружать оператор -> ? - C++
Доброго времени суток. Есть класс: template&lt;class T&gt; class Auto_ptr { public: Auto_ptr(T* p) : pointer(p) { } ~Auto_ptr() {...

Как правильно перегружать операторы? - C++
Добрый день. Более-менее освоил Си, и вроде бы неплохо в нем разбираюсь. Решил взяться за плюсы. Помогите разобраться с перегрузкой...

Как правильно перегружать унарный минус? - C++
Дайте правильный прототип перегрузки унарного минуса.

Перегрузить оператор вывода, чтобы заданный пользовательский класс выводился в файл произвольным образом - C++
Добрый вечер. Помогите, пожалуйста. Есть класс class chelovek { private: string name; string pol; string vozrast; string...

Как перегрузить оператор вывода в поток для вектора? - C++
Стало интересно реализовать подобный функционал, и конечно же ничего не работает. При этом коде: template&lt;class T&gt; ...

ПОТОКОВЫЙ ФАЙЛ - C++
Здравствуйте! Скажите пожалуйста.... 1)применяют ли в с++ ПОТОКОВЫЙ ФАЙЛ ? 2) и что это такое вообще ? поискал в инете,в книгах...

Как правильно перегрузить оператор [] = - C++
вот например в классе хранится массив, и допустим я хочу елементу массива в этом классе присвоить другое значение, тоесть так, class...

Как правильно записать условие в оператор if - C++
Имеется структура pro. Надо пропустить в if те элементы структуры, которые находятся в промежутке между pr и pr if (( pro.price &gt;= pr...

Как правильно применять оператор switch - C++
Подскажите пожалуйста, в чём здесь ошибка. Язык С++. Среда C++ Builder 6. void __fastcall TForm1::Button1Click(TObject *Sender) { ...

Как правильно перегрузить оператор для шаблона класса - C++
Имеется такой шаблон: template&lt;int Low = 0, int High = 1000&gt; class Diapazon { }; Внутри него много всего, что уже работает,...

Как же все-таки лучше всего перегружать операторы? - C++
1. Нужно ли использовать friend там, где это возможно? (или не стоит злоупотреблять где-нибудь?) 2. Стоит ли при перегрузке бинарного...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
19.06.2012, 09:45     Как правильно перегружать потоковый оператор вывода в файл? #2
Цитата Сообщение от taras atavin Посмотреть сообщение
Нужен только прототип оператора
C++
1
ofstream& operator << (ofstream&, yourType&);
и для
Цитата Сообщение от taras atavin Посмотреть сообщение
"цепной" формы
нужно из функции вернуть ofstream & объект, который был принят в качестве аргумента.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
19.06.2012, 09:51     Как правильно перегружать потоковый оператор вывода в файл? #3
Каноническая форма такая:
C++
1
2
3
4
5
OStream& operator<<(OStream& _os, const T& _value)
{
    // тут какая-то реализация вывода _value в _os....
    return _os;
}
Если T - POD-тип, то лучше использовать форму T _value. OStream может быть как стандартным потоком вывода (std::ostream или один из его наследников), так и пользовательским потоком.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.06.2012, 10:39  [ТС]     Как правильно перегружать потоковый оператор вывода в файл? #4
Цитата Сообщение от dimcoder Посмотреть сообщение
C++
1
ofstream& operator << (ofstream&, yourType&);
Цитата Сообщение от dimcoder Посмотреть сообщение
нужно из функции вернуть ofstream & объект, который был принят в качестве аргумента.
Странно. Я так и делал.

Добавлено через 43 минуты
Проблема решена через ostream вместо ofstream.
Yandex
Объявления
19.06.2012, 10:39     Как правильно перегружать потоковый оператор вывода в файл?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru