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

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

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.06.2012, 07:13     Как правильно перегружать потоковый оператор вывода в файл? #1
Нужен только прототип оператора, реализацию сделаю сам. Обязательное требование: должна поддерживаться "цепная" форма:
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++ ПОТОКОВЫЙ ФАЙЛ
C++ как правильно перегружать оператор?
C++ Как правильно применять оператор switch
C++ Как правильно перегружать унарный минус?
Как перегружать оператор -> ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
19.06.2012, 09:45     Как правильно перегружать потоковый оператор вывода в файл? #2
Цитата Сообщение от taras atavin Посмотреть сообщение
Нужен только прототип оператора
C++
1
ofstream& operator << (ofstream&, yourType&);
и для
Цитата Сообщение от taras atavin Посмотреть сообщение
"цепной" формы
нужно из функции вернуть ofstream & объект, который был принят в качестве аргумента.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
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
Ушёл с форума.
 Аватар для 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     Как правильно перегружать потоковый оператор вывода в файл?
Ответ Создать тему
Опции темы

Текущее время: 14:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru