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

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

Войти
Регистрация
Восстановить пароль
 
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
#1

Передвинуть элементы в массиве указателей на объекты fstream - C++

17.06.2014, 01:37. Просмотров 342. Ответов 10
Метки нет (Все метки)

Здравствуйте. Есть прога в которой одновременно надо обрабатывать до 10 файлов. Для этого создан массив указателей на fstream. Проблема такая: при закрытии, например 4-го файла, надо в массиве указателей на файлы сдвинуть элементы к началу массива, начиная с 4 позиции. То есть:
C
1
2
3
4
5
6
fstream fList[10]; //массив указателей на файлы
 
...........................
 
for (int i = 4; i < 10; i++)
      fList[i] = flist[i + 1];
В классе fstream не определен оператор присваивания, так что такой вариант не работает.
Как правильно реализовать этот кусок кода?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2014, 01:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передвинуть элементы в массиве указателей на объекты fstream (C++):

Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей? - C++
Доброго времени суток! Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты, для чего используются указатели на...

Как записать в файл данные, используя объекты fstream? - C++
Самый простой способ реализации, пожалуйста. К примеру, что надо изменить в этой части кода, чтобы она работала как надо? То есть:...

Массив указателей на объекты - C++
Доброго времени суток. В моем коде базовый класс имеет два наследника. Четвертый класс содержит динамический массив указателей на...

Массив указателей на объекты подклассов - C++
Доброго времени суток всем!!! Проф задал написать парсер простых математических выражений с использованием скобок. Код не должен...

Динамический массив указателей на объекты - C++
вообщем была тут на форуме задача, в подробности вдаваться не буду, смысл сейчас заключается в том, чтобы создавать в цикле объекты, и в их...

Динамический массив указателей на объекты класса - C++
Добрый вечер! Нужна помощь У меня имеется класс STROKA(вроде уже готовый,и все хорошо) Только вот никак не могу понять, как создать...

10
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 01:43 #2
Цитата Сообщение от snowleo Посмотреть сообщение
Для этого создан массив указателей на fstream.
И где он? Вот это не массив указателей:
Цитата Сообщение от snowleo Посмотреть сообщение
fstream fList[10];
0
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 01:54  [ТС] #3
То есть надо использовать:
C
1
fstream *fList = new fstream[10];
или же:
C
1
fstream **fList = new fstream*[10];
Какой из вариантов?
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 01:59 #4
Цитата Сообщение от snowleo Посмотреть сообщение
То есть надо использовать:
fstream *fList = new fstream[10];
Это то же самое (не массив указателей), но в динамической памяти.

Добавлено через 2 минуты
Цитата Сообщение от snowleo Посмотреть сообщение
или же:
Можно так, можно сяк:
C++
1
fstream* fList[10];
0
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:07  [ТС] #5
Ок. Подскажите, как дальше пользоваться этой конструкцией для работы с файлами?
Что-то типа:
C
1
2
3
4
5
6
7
fstream **fList = new fstream*[10];
 
//открытие файла
fList[0]->open("1.txt");
 
//вывод в файл
*fList[0]<<"test";
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 02:13 #6
Цитата Сообщение от snowleo Посмотреть сообщение
как дальше пользоваться этой конструкцией для работы с файлами?
...
Цитата Сообщение от snowleo Посмотреть сообщение
Что-то типа:
0
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:21  [ТС] #7
Ладно. Основной вопрос был-как передвинуть элементы в массиве?
C
1
2
3
4
for (int j = 4; j < 10; j++)
{
     fList[j] = fList[j + 1];
}
Такой вариант, на сколько я понял, не верен. Так как же правильно?
0
Renji
1925 / 1323 / 298
Регистрация: 05.06.2014
Сообщений: 3,808
17.06.2014, 02:24 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Правильно - использовать std::vector и вызывать метод erase. Или std::move, если уж вектор не по нраву.
1
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:31  [ТС] #9
Смысл в том, чтобы сохранить порядок следования файлов, так как индекс связан с другим списком, в котором после удаления элемента из середины, остальные элементы сдвигаются к началу, занимая освободившееся место.
0
Renji
1925 / 1323 / 298
Регистрация: 05.06.2014
Сообщений: 3,808
17.06.2014, 02:34 #10
И? erase/std::move по вашему порядок следования как-то меняет?
1
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:38  [ТС] #11
Renji, все понял. Большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 02:38
Привет! Вот еще темы с ответами:

Как понять: массив указателей на объекты классов? - C++
если приведете пример буду рад.

Массивы указателей на объекты как данные класса - C++
Вообщем: мне надо так,чтобы объект имел связь с N-ым количеством каких-то объектов.про динамические массивы в курсе. такой вопрос,что...

Привсоение масиву указателей объекты без имени - C++
Здравствуйте. Читал книгу там был пример, в нем не могу понять что присваивается массиву указателей ведь TwoDShape и Triangle это классы, а...

Указатель на массив указателей на объекты, передать в метод объекта - C++
Здравствуйте! Нужно решить задачу, есть такой класс. class MyClsDisk { public: void...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
17.06.2014, 02:38
Ответ Создать тему
Опции темы

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