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

Поток как статическая компонента объкта - C++

Восстановить пароль Регистрация
 
 
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
02.08.2013, 20:17     Поток как статическая компонента объкта #1
Доброго вечера ! Выполняю упражнения по книге. Если вкратце то при компиляции возникает ошибка в результате добавления static fstream file в поле данных класса как того и требует упражнение (создать поток как стат компоненту объекта и создать 2 стат функции для управления). Может я что то неверно понял, подскажите пожалуйста, полная версия упражнения написана ниже.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class employee
{
private:
 -||-
static fstream file;
public:
static void OpenFile()
{
   file.open("ex7.txt")
}
-||-
};
Упражнение: Другим подходом к добавлению файлового потока к объекту является превращение самого этого потока в статическую компоненту объекта. Для чего это делается? Ну, часто бывает проще представить себе поток связанным с классом в целом, а не с отдельными его объектами. К тому же, гораздо правильнее открывать поток только один раз для записи и чтения всего, что нужно. Например, мы открываем файл и начинаем последовательное чтение. Функция чтения всякий раз возвращает данные для следующего объекта. Указатель файла сдвигается при этом автоматически, так как между чтениями файл мы не закрываем.
Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать объект fstream в качестве статической компоненты класса name. Функционирование программы должно сохраниться. Напишите статическую функцию для открытия потока и еще одну — для сбрасывания файлового указателя и установки его на начало файла. Эту же функцию можно использовать для чтения всего файла.

Добавлено через 5 минут
Прошу прощения забыл инициализировать статическую компоненту после определения класса. Вопрос закрыт )
C++
1
2
3
4
5
6
7
class employee
{
private:
static fstream file;
..........
};
fstream employee::file;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2013, 05:22     Поток как статическая компонента объкта
Еще ссылки по теме:

Скопировать поток и добавить ошибки в поток C++
Статический метод как точка входа в поток - как избавиться C++
Как очистить входной поток от '\n'? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.08.2013, 05:22     Поток как статическая компонента объкта #21
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
31
32
#include <fstream> 
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    fstream f("1.txt"); // в файле: "123456789"
   if (!f) cout << "Error!" << endl;
   else
   {
       cout << "1) " << f.tellp() << ' ' << f.tellg() << endl; // 1) 0 0
       
       string  str1 = "0000";
       f << str1; // записали в буфер "0000"
       cout << "2) " << f.tellp() << ' ' << f.tellg() << endl; // 2) 4 4
       
       f.flush(); // то что записали в буфер, попало в файл. Теперь в файле: "000056789"
       cout << "3) " << f.tellp() << ' ' << f.tellg() << endl; // 3) 4 4
       
       string str2;
       
       f >> str2; // прочитали из файла в str2
       cout << "4) " << f.tellp() << ' ' << f.tellg() << endl; // 4) 9 9
       
       cout << str2 << endl; // выведется "56789", а не "000056789", т.е. от положения курсора после записи.
   }
 
   system("pause");
   return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
03.08.2013, 05:22     Поток как статическая компонента объкта
Ответ Создать тему
Опции темы

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