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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.67
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
#1

Разделение текстового файла на части - C++

11.09.2010, 18:17. Просмотров 3254. Ответов 22
Метки нет (Все метки)

имеется текстовый файл(ANSI) *.txt очень огромный для латиницы, нужно разделить на файлы типа *.map хотя можно и *.txt поочередно с 1 и далее, до конца читаемого файла. метка для разбиения - "[SpecialFlags]" включая квадратные скобки.
допустим файл multimd.txt имеет вид
Код
[SpecialFlags]
текст

[SpecialFlags]
текст

[SpecialFlags]
текст
нужно сделать в каждом файле отдельный кусок этого файла

Код
[SpecialFlags]
текст
аформление хоть через консоль хоть через форму, не важно.

файл чтения более 40мб.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rrrFer
Заблокирован
11.09.2010, 18:36     Разделение текстового файла на части #2
вопрос то где?

Добавлено через 50 секунд
ИМХО с такой формулировкой тема претендует на перенос в раздел "заказ программ"
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.09.2010, 19:01  [ТС]     Разделение текстового файла на части #3
Цитата Сообщение от rrrFer Посмотреть сообщение
вопрос то где?

Добавлено через 50 секунд
ИМХО с такой формулировкой тема претендует на перенос в раздел "заказ программ"
чтение из файла с одновременной записью. помочь кто чем сможет.

Не по теме:

могу и в ручную перебрать файл, просто часа 4 с меня хватило понять что и для меня - много хоть и кусковать нужно более чем в 1500 строк за раз)))

rrrFer
Заблокирован
11.09.2010, 19:07     Разделение текстового файла на части #4
cibertronic,
Цитата Сообщение от cibertronic Посмотреть сообщение
чтение из файла с одновременной записью. помочь кто чем сможет.
Цитата Сообщение от cibertronic Посмотреть сообщение
имеется текстовый файл(ANSI) *.txt очень огромный для латиницы, нужно разделить на файлы типа *.map хотя можно и *.txt поочередно с 1 и далее, до конца читаемого файла. метка для разбиения - "[SpecialFlags]" включая квадратные скобки.
из одного файла читаете, в другой пишите
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.09.2010, 19:25  [ТС]     Разделение текстового файла на части #5
многообещающе.... спасибо......

Не по теме:

в ручную проще.
просто есть карта в игре, она несколько неустраивает, есть редактор карт, но он непонимает пакет из карт, а только карты отдельно. карт в этом пакете дофига и больше, в ручную искать сложно, тк в пакете обозначения карт неуказывается, а лишь разделяется. причем знаком переноса строки, который,в свою очередь, встречается гараздо чаще чем начало разметки карты вышеуказанное...с файлами не работал, поэтому никак не могу осуществить задумку поиска нужной карты в си. пытался вручную, но выделение более чем 1500 строк затягивается в неимоверное количество времени... хочу просто вырезать ее и прорисовать несколько иначе в отдельной карте

silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
11.09.2010, 19:44     Разделение текстового файла на части #6
Подождите, а выделение блока текста с зажатым шифтом уже не в моде? Если я вас правильно понял, то это то, что вам надо.
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.09.2010, 19:51  [ТС]     Разделение текстового файла на части #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
выделение блока текста с зажатым шифтом
блок более 1500 сТрОк, количество блоков я не знаю, но в файле их очень много, скроллингом просто уйму времени занимает поиск нужного фрагмента., движком скроллинга перемещает за интервал чуть ли не в пять раз больше нужного текста, по этому "не очень удобно"
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
11.09.2010, 19:52     Разделение текстового файла на части #8
cibertronic,
А Ctrl+F для поиска разделителя?
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.09.2010, 20:08  [ТС]     Разделение текстового файла на части #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
cibertronic,
А Ctrl+F для поиска разделителя?

делаю Ctrl+F нахожу разделитель, чтоб выделить текст ОТ и ДО нужен СКРОЛЛИНГ текста который опять же либо занимает уйму времени либо пролистыват раз в пяль больше текста чем надо.
поэтому и прошу помочь с тем чтобы при нахождении в тексте строки с "[SpecialFlags]" отделял ентот текст(тоесть до него) и сохранял в файл, при чем каждый файл начинался именно с этой метки
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
11.09.2010, 20:12     Разделение текстового файла на части #10
cibertronic,
Ладно, последняя попытка убедить. Алгоритм:
1. Открываем файл.
2. Ищем метку по Ctrl+F
3. Ставим курсор перед меткой
4. Скроллим в начало файла
5. С зажатым Shift'ом ставим курсор в начало файла
6. Выделенный текст по Ctrl+X вырезаем
7. Копируем в новый файл
8. Удаляем метку, оказавшуюся теперь в начале файла
9. if (файл не пустой) GOTO 2
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
11.09.2010, 20:29     Разделение текстового файла на части #11
cibertronic, твоя задача очевидно носит чисто практический характер. Бери любой язык программирования, с которым ты наиболее знаком, и вперед.
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.09.2010, 20:57  [ТС]     Разделение текстового файла на части #12
Цитата Сообщение от silent_1991 Посмотреть сообщение
cibertronic,
Ладно, последняя попытка убедить. Алгоритм:
1. Открываем файл.
2. Ищем метку по Ctrl+F
3. Ставим курсор перед меткой
4. Скроллим в начало файла
5. С зажатым Shift'ом ставим курсор в начало файла
6. Выделенный текст по Ctrl+X вырезаем
7. Копируем в новый файл
8. Удаляем метку, оказавшуюся теперь в начале файла
9. if (файл не пустой) GOTO 2
для тех кто в танке)) ПОВТОРЯЮ файл большой, изза этого буфер тупит, скроллингом с шифтом или без шифта тупит поэтому поиск нужного очень долгий, я могу в принципе и в ручную перебрать все это путем курсор скролл шифт клик вырез вставка сохранение, но на это дохрина, модераторы простите, времени уходит....
rrrFer
Заблокирован
11.09.2010, 21:16     Разделение текстового файла на части #13
cibertronic,
Цитата Сообщение от cibertronic Посмотреть сообщение
для тех кто в танке)) ПОВТОРЯЮ файл большой, изза этого буфер тупит
буфер обмена что-ли? или вы пытаетесь писать программу и у вас переполняется буфер?

Не по теме:

это мой танк такой хороший или вы так доходчиво обьясняете?


вы пробовали вообще сами что-то написать? если да то прилагайте попытки.
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
11.09.2010, 21:17     Разделение текстового файла на части #14
rrrFer,
Цитата Сообщение от rrrFer Посмотреть сообщение
если да то прилагайте попытки

Не по теме:

А если нет?

rrrFer
Заблокирован
11.09.2010, 21:58     Разделение текстового файла на части #15
silent_1991,

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
А если нет?
значит нет ))

Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
12.09.2010, 01:15     Разделение текстового файла на части #16
Автор, хоть бы написал "помогите" или что-то в этом роде.
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
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
 
int main( int argc, char* argv[] )
{
    std::ifstream ifs( "multimd.txt" );
 
    for( long i = 0; !ifs.eof(); ++i )
    {
        std::ostringstream ostr;
        ostr << "output" << std::setw(5) << std::setfill('0') << i;
        std::ofstream ofs( ostr.str().c_str() );
        for( int j = 0; j < 3; ++j )
        {
            std::string str;
            std::getline( ifs, str );
            ofs << str << std::endl;
        }
    }
 
    return 0;
}
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2010, 01:30     Разделение текстового файла на части #17
Andrew_Lvov, малость дополнил, но не проверял, очевидно теперь задача решена хоть как-то
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
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
 
int main(int argc, char* argv[])
{   
    std::ifstream ifs( "multimd.txt" );
 
    for( long i = 0; !ifs.eof(); ++i )
    {
        std::ostringstream ostr;
        ostr << "output" << std::setw(5) << std::setfill('0') << i;
        std::ofstream ofs( ostr.str().c_str() );
 
        while(ifs)
        {   
            std::string str;
            std::getline( ifs, str );
            
            if(str == "[SpecialFlags]")
                break;
                
            ofs << str << std::endl;
        }
    }
 
    return 0;
}
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
12.09.2010, 01:36     Разделение текстового файла на части #18
fasked, а я проверил
Вы не пишите строчку, содержащую [SpecialFlags] в результирующие файлы.
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2010, 01:41     Разделение текстового файла на части #19
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Вы не пишите строчку, содержащую [SpecialFlags] в результирующие файлы.
точно, забыл про нее. ну так никто не мешает перед циклом while(ifs) дописать
C++
1
ofs << "[SpecialFlags]" << std::endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2010, 01:44     Разделение текстового файла на части
Еще ссылки по теме:

C++ Разделение массива и сортировка каждой части методом пузырька
C++ Разделение числа на целую и дробную части
C++ Разделение программы на два файла
C++ Разделение строк на части
Обработка текстового файла C++

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

Или воспользуйтесь поиском по форуму:
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
12.09.2010, 01:44     Разделение текстового файла на части #20
Цитата Сообщение от fasked Посмотреть сообщение
точно, забыл про нее. ну так никто не мешает перед циклом while(ifs) дописать
Я исходил из того, что под [specialflags] автор мог понимать "что-то в квадратных скобках без переноса строки".
Yandex
Объявления
12.09.2010, 01:44     Разделение текстового файла на части
Ответ Создать тему
Опции темы

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