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

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

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

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

19.06.2012, 07:13. Просмотров 450. Ответов 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++ ПОТОКОВЫЙ ФАЙЛ
C++ как правильно перегружать оператор?
C++ Как правильно применять оператор switch
C++ Как правильно перегружать унарный минус?
Как правильно перегрузить оператор для шаблона класса C++
Как перегружать оператор -> ? C++
C++ Как правильно записать условие в оператор if
C++ Как же все-таки лучше всего перегружать операторы?
C++ Как правильно перегрузить оператор [] =
C++ Как правильно перегружать операторы?
C++ Перегрузить оператор вывода, чтобы заданный пользовательский класс выводился в файл произвольным образом
Как перегрузить оператор вывода в поток для вектора? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
19.06.2012, 09:45     Как правильно перегружать потоковый оператор вывода в файл? #2
Цитата Сообщение от taras atavin Посмотреть сообщение
Нужен только прототип оператора
C++
1
ofstream& operator << (ofstream&, yourType&);
и для
Цитата Сообщение от taras atavin Посмотреть сообщение
"цепной" формы
нужно из функции вернуть ofstream & объект, который был принят в качестве аргумента.
CheshireCat
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
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     Как правильно перегружать потоковый оператор вывода в файл?
Ответ Создать тему
Опции темы

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