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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
#1

Наследование от ofstream и перегрузка << - C++

14.07.2015, 14:36. Просмотров 1475. Ответов 70
Метки нет (Все метки)

Добрый день, гуглил на английском языке, но ответа не попалось. Предыстория: некий объекта принимает в качестве параметра ссылку на ostream, куда подсовывается ofstream. Задача в том, что перед действием << требуется сделать дополнительные телодвижения, а точнее обработать данные, которые направляются на выход. Я вижу решение таким, что нужно наследоваться от ofstream и переопределить <<. как это правильно делается нагуглить не удалось. Буду рад приведенным примерам или ссылкам на статьи об этом. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 14:36     Наследование от ofstream и перегрузка <<
Посмотрите здесь:

Перегрузка ifstream и ofstream? - C++
Есть класс //test.h cass test { private: int i; string st; public:

Перегрузка ofstream, istream - C++
В общем-то ошибка в описана в самом коде //main.cpp #include &quot;ui.cpp&quot; int main() { ui iu; iu.menu(); iu.casein(); ...

Перегрузка ofstream / ifstream для классов - C++
Приветствую! Возникла трудность. Имеется класс с данными. Необходимо реализовать чтение и ввод объекта класса в файл посредством перегрузки...

Перегрузка ifstream и ofstream для работы с файлами в little-endian формате? - C++
Всем привет, мне нужно реализовать классы для работы с файлами в little-endian формате. Для этого задумал сделать public-потомки...

Наследование и перегрузка << - C++
Здравствуйте! Столкнулся со следующей проблемой: class A { int data,info; // .. public: friend void operator &lt;&lt;(ostream &amp;a,...

Наследование и перегрузка операторов - C++
Помогите, пожалуйста! Ткните носом в ошибки.. не судите строго - первая прога в С++, как и в объектно-ориент программировании: ...

Наследование, перегрузка, конструктор - C++
#include &lt;iostream&gt; class animal { public: animal() { } animal(int a) { age = a; } ~animal() { } void set_age(int b) { age...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.07.2015, 12:41     Наследование от ofstream и перегрузка << #31
Цитата Сообщение от VVildVVolf Посмотреть сообщение
Привет всем снова, тут проблема возникла, при передачи в CustomStreamBuf ссылки на ostream. Передаю туда cout - всё норм, всё выводит на консоль, передаю туда ofstream - пустой файл получаю... из-за чего такое может быть?
std::endl при выводе используется? Если нет - работать не будет.
Мой код тот же, кроме fstream:

C++
1
2
   std::ofstream ofs("test_file.txt");
   formatting_ostream stream(ofs, to_lower);
Bash
1
2
3
4
cat test_file.txt 
hello
hello
HeLlO
vxg
Модератор
3144 / 1946 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
20.07.2015, 13:07     Наследование от ofstream и перегрузка << #32
Цитата Сообщение от ForEveR Посмотреть сообщение
Если нет - работать не будет
о ужас %/ зачем они сделали синк по эндл?? можно победить сделав руками флэш. ну или в оверфлоу ловить делители
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 13:12  [ТС]     Наследование от ofstream и перегрузка << #33
на самом деле синк в моём конкретно случае мало волнует (не бейте меня, я его в деструкторе стрима вызываю...), и получается endl и '\n' не одно и тоже? попробую в конце принудительно заталкивать endl для верности... но при указании папки - так ничего не создаётся, ни на домашнем ноуте, ни на рабочей машинке, даже при запуске с правами админа...
vxg
Модератор
3144 / 1946 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
20.07.2015, 13:45     Наследование от ofstream и перегрузка << #34
Цитата Сообщение от VVildVVolf Посмотреть сообщение
я его в деструкторе стрима вызываю
так тоже можно. странно что он сам не вызывается. или может он вызывается но после того как поток файла убился. я всегда думал что эндл это просто вставка платформозависимого делителя. но наверное она еще и синк зовет. хз. зачем вам пихать эндл если все работает? или все еще не работает? у меня файл создается - почему у вас нет? может не нужно / ставить в голову?
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 13:52  [ТС]     Наследование от ofstream и перегрузка << #35
Цитата Сообщение от vxg Посмотреть сообщение
или все еще не работает
не работает на 2х машинах причем файл не создаётся, и со слэшем, и без, и с "~/" и с "./" и всё тоже самое с обратными слэшами пробовал..

причем (если файл создаётся в той же папке, что и прога) такой код:
C++
1
2
3
4
5
6
7
ofstream output;
    output.open(outFileName);
 
    output<<"begin"<<endl;
    
    p = new Parser(output);
    output<<"end"<<endl;
генерит файл с текстом
begin
end
vxg
Модератор
3144 / 1946 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
20.07.2015, 14:03     Наследование от ofstream и перегрузка << #36
Цитата Сообщение от VVildVVolf Посмотреть сообщение
не работает
попробуйте абсолютный путь. может у вас рабочая папка какая-нибудь экзотическая при вызове
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 14:15  [ТС]     Наследование от ofstream и перегрузка << #37
Цитата Сообщение от vxg Посмотреть сообщение
попробуйте абсолютный путь. может у вас рабочая папка какая-нибудь экзотическая при вызове
не, не даёт... это причем даже в отдельном проекте, где пытаюсь просто тупо в файл записать.

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <fstream>
 
using namespace std;
int main(){
    ofstream os2("C://lol/lout.txt");
    os2<<"tro"<<endl;
    os2.close();
    return 0;
}
вот это не создаёт файл ни по абсолютному, ни по относительному, только если тупо имя указать - в текущей и всё...
Avazart
20.07.2015, 14:21
  #38

Не по теме:

Цитата Сообщение от vxg Посмотреть сообщение
ои глаза! мои прекрасные глаза!! до сих пор не могу привыкнут к этим штукам. и никогда наверное не привыкну
Так же фигня, а уши уши ведь звучит как нецензурщина ....

vxg
Модератор
3144 / 1946 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
20.07.2015, 14:24     Наследование от ofstream и перегрузка << #39
Цитата Сообщение от VVildVVolf Посмотреть сообщение
вот это не создаёт файл ни по абсолютному, ни по относительному, только если тупо имя указать - в текущей и всё
ну вы же понимаете что это невозможно)

Добавлено через 50 секунд
полагаю что то с правами или хз чем но не с программой. что то мне подсказывает что вам нужно попробовать порабоать в винде
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 14:30  [ТС]     Наследование от ofstream и перегрузка << #40
Цитата Сообщение от vxg Посмотреть сообщение
ну вы же понимаете что это невозможно)
я чего-то в упор не вижу(я что-то делаю так, что при этом невозможно создать файл), или невозможен факт несоздования файла с папкой?Оо если второе - готов поспорить)

Добавлено через 55 секунд
Цитата Сообщение от vxg Посмотреть сообщение
полагаю что то с правами или хз чем но не с программой. что то мне подсказывает что вам нужно попробовать порабоать в винде
Вы хотели сказать НЕ в винде?

Добавлено через 2 минуты
да и если б была проблема с правами,тогда б и в своей директории не разрешал создавать? я ведь и из-под диска C с правами админа запускал...
vxg
Модератор
3144 / 1946 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
20.07.2015, 14:37     Наследование от ofstream и перегрузка << #41
Цитата Сообщение от VVildVVolf Посмотреть сообщение
Вы хотели сказать НЕ в винде?
просто показалась что вы из Этих.. которые не в винде)
раз уж так рассказывайте что за система что за диски что за пользователи что за среда разработки есть ли антивирусы, DEP и прочая шляпа
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 14:43  [ТС]     Наследование от ofstream и перегрузка << #42
Цитата Сообщение от vxg Посмотреть сообщение
просто показалась что вы из Этих.. которые не в винде)
странно, с чего бы..
на ноуте винда (ваз 2107) стоит на виртуалке, никаких антивирусов, ниче (скорее вирусов могло накачаться), специально ни права ничего не настраивал, только гостевое расширение виртуалБокса, студия 2012я.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,436
Записей в блоге: 17
20.07.2015, 14:46     Наследование от ofstream и перегрузка << #43
Цитата Сообщение от VVildVVolf Посмотреть сообщение
C++
1
ofstream os2("C://lol/lout.txt");
C++
1
ofstream os2("C:\\lol\\lout.txt");
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 14:48  [ТС]     Наследование от ofstream и перегрузка << #44
Цитата Сообщение от Avazart Посмотреть сообщение
C++
1
ofstream os2("C:\\lol\\lout.txt");
и так, и
C++
1
ofstream os2("C:\\\\lol\\lout.txt");
тоже
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2015, 14:49     Наследование от ofstream и перегрузка <<
Еще ссылки по теме:

Наследование и перегрузка методов - C++
Здравствуйте. Пытаюсь выполнить упр. 8 из главы 11 книги Р.Лафоре &quot;ООП в С++&quot;, соорудил такое древо классов (картинка в конце поста). Если...

Наследование и перегрузка операторов. - C++
У меня есть базовый класс class myfloat { protected: int c; int z; void reduce(); public: myfloat(float num=0);

Перегрузка оператора ввода и наследование - C++
Добрый день! Обращаюсь по такому поводу. Есть одна программа, в которой требуется перегрузить операторы ввода.вывода для одного из...

Наследование. Классы. Перегрузка '=' и иже с ними - C++
Всем доброго самого. Вопрос для уточнения. Есть класс: class A { public: A &amp; operator = (const A...

Наследование\перегрузка, не понимаю в чем ошибка - C++
Почему в выделенных местах пишет ошибку про неопределенность? Если оставить наследование только от Counter, то все норм. Пробовал...


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

Или воспользуйтесь поиском по форуму:
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,436
Записей в блоге: 17
20.07.2015, 14:49     Наследование от ofstream и перегрузка << #45
Накой 4 слеша?
Yandex
Объявления
20.07.2015, 14:49     Наследование от ofstream и перегрузка <<
Ответ Создать тему
Опции темы

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