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

Присваивание объекта класса ofstream - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как пользоваться с scanf, и чем отличается от cout http://www.cyberforum.ru/cpp-beginners/thread1114073.html
Знающие, подскажите как пользоваться с scanf, и чем отличается от cout. И чем лучше всего пользоваться.
C++ Расположить первые N натуральных чисел так, чтобы между любыми двумя из расположенных не было их среднего арифметического #include<iostream> #include<vector> using namespace std; void func (vector<int> vec, int p) { int i; i = 0; stop1:while (i<p) { http://www.cyberforum.ru/cpp-beginners/thread1114044.html
Как реализовать наследование классов C++
Здравствуйте, уважаемые форумчане. Помогите с решением проблемной ситуации, связанной скорее всего с аргументами в коде. Я определяю дочерний класс Diagonalsandrectangle, но при выполнении метода ShowObject ShowPoint не срабатывает. Задали домашнюю, почитал материал, думаю дело в том что надо было аргументы еще добавить или объявить. Никогда раньше с наследованием, а тем более множественным, не...
В строке удалить все заданные группы букв C++
Добрый Вечер! Помогите пожалуйста! В строке удалить все заданные группы букв.
C++ Напишите функцию, считывающую значение из первого узла списка и удаляющую его http://www.cyberforum.ru/cpp-beginners/thread1114022.html
1) Напишите функцию, считывающую значение из первого узла списка и удаляющую его. 2) Напишите функцию, удаляющую весь список. Помогите с этими задачами. И вообще можете объяснить или скинуть ссылку, где объяснены узлы,списки, стеки и все, что с ними связано.Я совсем уже потерялся в них=( Добавлено через 3 часа 4 минуты Кто-нибудь может помочь?
C++ Сравнения строк по индексацией Народ как ето сравнения строк по индексацией ? подробнее

Показать сообщение отдельно
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16
08.03.2014, 18:29  [ТС]     Присваивание объекта класса ofstream
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
int main () 
{ 
using namespace std; 
vector<string> vostr; 
string temp; 
// Получить строки 
cout « "Enter strings (empty line to quit) :\n"; // запрос на ввод строк 
while (getline (cin, temp) && temp[0] != '\0') 
vostr.push_back(temp); 
cout « "Here is your input. \n"; // вывод введенных строк 
for_each(vostr.begin (), vostr.end(), ShowStr); 
// Сохранить в файле 
ofstream fout("strings.dat", ios_base::out | ios_base::binary); 
for_each (vostr.begin (), vostr.end(), Store(fout)) ; !!!!!!!!!!!!!!!! 
f out .close () ; 
// Восстановить содержимое файла 
vector<string> vistr; 
ifstream fin("strings.dat", ios_base::in | ios_base: :binary) ; 
if (!fin.is_open()) 
{ 
cerr « "Could not open file for input. \n"; 
//не удается открыть файл для ввода 
exit(EXIT_FAILURE); 
} 
GetStrs(fin, vistr); 
cout « "\nHere are the strings read from the file:\n"; 
// строки, прочитанные из файла 
for_each(vistr.begin (), vistr.end(), ShowStr); 
return 0; 
}
Обратите внимание, что файл открывается в бинарном формате и требуется,
чтобы ввод-вывод осуществлялся методами read () и write (). Остается сделать
немного, как перечислено ниже.
• Написать функцию void ShowStr (const string &), которая отображает
объект string с последующим символом перевода строки.
• Написать функтор Store, который записывает строковую информацию в
файл. Конструктор Store должен указывать объект ifstream (вероятнее всего,это опечатка в книге, должно быть ofstream), а
перегруженная функция operator () (const string &) должна указывать строку,
подлежащую записи. Приемлемый подход состоит в записи в файл сначала размера
строки, а затем — ее содержимого. Например, если len содержит размер
строки, можно было бы использовать следующие операторы:
os.write((char *)&len, sizeof(std::size_t)); // сохранить длину
os.write(s.data(), len); // сохранить символы
Член data () возвращает указатель на массив, который содержит символы
строки. Он подобен члену с_str (), за исключением того, что последний
добавляет нулевой символ.
• Написать функцию GetStrs(), которая восстанавливает информацию из
файла. Она может использовать read () для получения размера строки и
затем применять цикл для чтения указанного количества символов из файла,
добавляя их в изначально пустую временную строку. Поскольку данные
объекта string— закрытые, для извлечения данных в строку должен
использоваться метод класса вместо считывания их напрямую в нее.

Добавлено через 10 минут
Цитата Сообщение от zss Посмотреть сообщение
Думаю, вполне достаточно хранить адрес объекта ofstream:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
using namespace std;
class A
{
    ofstream* ff;
public:
    A(ofstream* f0):ff(f0){}
};
int main()
{
    ofstream f;
    A x(&f);
}
Спасибо за совет,но в таком случае придется вносить изменения в main, а это не предусмотрено условиями задачи.
 
Текущее время: 22:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru