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

Разбить файл на части - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
28.01.2010, 00:56     Разбить файл на части #1
вот недавно изучил тему про fstream

такая задача, нужно разбить файл на столько частей на сколько пожелает пользователь.
к примеру на 10
C++
1
2
3
4
5
6
fstream f("f.txt",ios::in);
f.seekg(0,ios_base::end);
cout<<"Razmer fayla "<<f.tellg()<<" byte"<<endl;
int piece=(f.tellg()/10);
cout<<"Budem delit` na 10 po "<<piece<<" byte"<<endl;
f.seekg(0,ios_base::end);
подскажите, пока завис на том, как задать названия файлов. например пользователю нужно не 10 частей а 20, как программе автоматом прописывать для каждого файла свой индекс:
fstream f1("f1.txt",ios::in);
и так до 10ти

я так понимаю что нужно циклом делать, но как в цикле указать fstream f1, fstream f2 .... fstream f10
и аналогично название файла тоже нужно что-бы изменялось по порядку.

заранее благодарю за подсказки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.01.2010, 01:26     Разбить файл на части #2
самое тупое что сразу пришло в голову
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    for(int i = 0; i < 10; i++)
    {
        char filename[256] = { 0 };
        char buffer  [256] = { 0 };
        
        strcpy(filename, "file");
        itoa(i, buffer, 10);
        strcat(filename, buffer);
        strcat(filename, ".txt");
        
        cout << filename << endl;
        
        fstream filestr;
        filestr.open(filename, ios::out | ios::binary);
        filestr.write("aegag123", 8);
        filestr.close();
    }
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.01.2010, 09:44     Разбить файл на части #3
delias, вот так как-то можно попробовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstring>
#include <fstream>
...
using namespace std;
...
const char *name = "file";
const char *ext = ".txt"; /* к примеру */
const int outfiles_count 10;
...
ofstream outfiles[outfiles_count];
char buf[256];
for ( int i = 0; i < outfiles_count; ++i ){
    sprintf(buf, "%s%02d%s", name, i, ext);
    outfiles[i].open(buf, ios_base::out | ios_base::trunc);
    if ( !outfiles[i].is_open() )
        // выругаться и выйти
    ...
} // в результате массив из 10 файлов, открытых для записи
...
кстати, количество файлов, которые одновременно может открыть программа, ограничено... Не десятью, но всё-таки без фанатизма!..
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
28.01.2010, 10:11  [ТС]     Разбить файл на части #4
спасибо ребят. сегодня буду пробовать по вашим методам делать.
Yandex
Объявления
28.01.2010, 10:11     Разбить файл на части
Ответ Создать тему
Опции темы

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