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

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

Войти
Регистрация
Восстановить пароль
 
Denisfox
Сообщений: n/a
#1

Перемещение по текстовому файлу. - C++

13.03.2012, 17:33. Просмотров 651. Ответов 4
Метки нет (Все метки)

Задача стоит такая:
Есть текстовый файл, где разные части текста отделены каким-либо спецсимволом (можно нумерованным, или не нумерованным - не важно). При этом разделительные символы встречаться в тексте не должны.

Нужно, чтобы программа могла прочесть этот файл, и вывести на экран нужную часть текста.


Допустим есть текстовый файл со следующим содержанием:

%1
Текст 1.
%2
Текст 2.
%3
Текст 3.
В программу вводится число. Допустим программа получила число 2 - на экран выводится "Текст 2.", думаю принцип понятен.


Если можно подскажите именно сам алгоритм поиска по текстовому файлу, и то, как можно "откусить" нужный кусок текста, и вывести на экран консоли.

Заранее огромное спасибо, буду рад любым советам.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 17:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перемещение по текстовому файлу. (C++):

Подключение к текстовому файлу - C++
Ребят, подскажите пожалуйста. у меня есть программа которая должна считывать с текстового файла фамилии. Фамилии написаны на русском языке,...

Файл: Поиск по текстовому файлу - C++
как сделать чтобы мы вводим текст а пограмка ищет совпадения с словами которые есть в текстовику? Добавлено через 18 секунд надеюсь...

Как подключиться к текстовому файлу? - C++
мне надо чтобы программа доставала от туда записи и сама записывала

Реализовать поиск по текстовому файлу - C++
В общем пытаюсь написать программу. Суть такая. Есть форма для заполнения. 6 EditControl и 1 ComboBox. создал кнопку для записи в файл этих...

Задание пути к текстовому файлу - C++
Здравствуйте. Передо мной стоит такая задача - нужно создать программу, которая запрашивала бы путь к текстовому файлу. То есть, при...

Перемещение по файлу клавишами - C++
Здравствуйте. Писал программу, позволяющую просматривать текстовый файл. main() { char f_name; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
13.03.2012, 17:56 #2
Простейший алгоритм
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    char symbol='%';
    int nPart=2;
    char temp;
    string text;
    ifstream file("file.txt");
 
    while(!file.eof() && nPart)
    {
        file>>temp;
        if(temp==symbol)
         nPart--;
    }
 
    if(!file.eof())
     file>>temp;
 
    while(!file.eof() && temp!=symbol)
    {
        cout<<temp;
        file>>temp;
    }
}
Оптимизацией и проверками занимаемся сами
0
Denisfox
Сообщений: n/a
14.03.2012, 23:47 #3
Хм.. вроде бы алгоритм понял, спасибо..

Не могу одного понять еще - из-за чего в тексте при выводе убираются все пробелы?

Добавлено через 14 минут
upd:
Почему пропадают понял - обработка идет посимвольно, пробелы игнорируются..

Но возникает новый вопрос - как их вернуть?

Собственно как и вопрос о возврате остальных символов форматирования - перенос на новую строку, к примеру.
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
14.03.2012, 23:57 #4
Цитата Сообщение от Denisfox Посмотреть сообщение
Но возникает новый вопрос - как их вернуть?
Использовать file.get() вместо операции взять из потока.
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
15.03.2012, 00:06 #5
Denisfox, забыл о том что потоки же отбрасывают пробелы и переводы каретки в этом случае. Нужно добавить манипулятор noskipws в поток, либо можно установить спец. флаг.
C++
1
2
3
4
5
6
........................................................
    while(!file.eof() && temp!=symbol)
    {
        cout<<temp;
        file>>noskipws>>temp;
    }
Либо можно поиграть с флагами, это будет более эффективно (каждый раз манипулятор не надо применять)
C++
1
2
3
4
5
6
7
8
9
10
11
......................................
    ios_base::fmtflags ff;
    ff=file.flags();
    ff &= ~ios_base::skipws;
    file.flags(ff);
 
    while(!file.eof() && temp!=symbol)
    {
        cout<<temp;
        file>>temp;
    }
0
Миниатюры
Перемещение по текстовому файлу.  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2012, 00:06
Привет! Вот еще темы с ответами:

Перемещение по бинарному файлу - C++
Перемещаться можно по файлу использую функции seekg() для чтения и seekp() для записи... В общем для того, чтобы перемещаться по файлу и...

Перемещение указателя FILE* по файлу - C++
Здравствуйте. какой есть способ перемещать указатель по файлу по байтово вместо fgetc()? те у меня есть указатель на начало...

Поиск по текстовому файлу - C++
Здравствуйте! Очень прошу помочь со следующим заданием (насколько я поняла, это должен быть поиск отдельных символов/слов/фраз в большом...

поиск по текстовому файлу - Delphi
Прошу помощи.. Нужно делать поиск по текстовому файлу следующего формата.. Input Data = 55 8B EC 83 | C4 EC 53 56 | 57 88 55 F7 | 89...


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

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

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