Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
1

Работа с файлами. Как вывести в консоль определённые строки из файла?

05.05.2021, 17:05. Показов 683. Ответов 11

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Кто может подсказать (а лучше показать), как вывести в консоль определённые строки из файла?
Допустим у нас есть файл db.txt с такими данными:

Имя: Денис
Название: 11
Год: 11

Имя: Валерий
Название: 22
Год: 22

Имя: Владислав
Название: 33
Год: 33

И мне нужно вывести в консоль то, что идет после имени Валерий и до имени Владислав.

Имя: Валерий
Название: 22
Год: 22

Как мне в этом коде реализовать этот алгоритм?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void library::search_book()
{
    int line, line_2;
    string DBname, getcontent, search_book;
    string  start = "\nНазвание книги: ";
    fstream DB;
    cout << "Введите имя БД, в которой будет происходить поиск: (Пример: DB.txt)" << endl;
    cin >> DBname;
    DB.open(DBname, ios::in);
    getline(DB, getcontent, '\0');
    DB.close();
    cout << "Введите название книги: " << endl;
    cin >> search_book;
// тут надо реализовать алгоритм
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2021, 17:05
Ответы с готовыми решениями:

Прочитать определенные строки из файла, занести в массив и вывести в консоль
есть файл { Имя : Александр, Фамилия : Александров, Возраст : 20 }, { Город : Москва, ...

Как считать текст из файла и вывести определённые строки?
написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие...

Вывести в ListBox только определенные строки из файла
Добавляю из txt файла список в ЛистБокс.Но добавлять надо только те данные которые будут...

Скопировать определенные строки из файла, вставить в другой, произвести расчет и вывести значения в Label
Здравствуйте, помогите, пожалуйста! Есть txt файл со строками : 9/24/2017 2 120...

11
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
05.05.2021, 18:19 2
Цикл.
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
05.05.2021, 18:21  [ТС] 3
Можете примерно написать этот цикл?
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
05.05.2021, 18:34 4
Считывай не всё, а по строкам и проверяй имя.
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
05.05.2021, 18:37  [ТС] 5
Через цикл while?

И еще, как я выведу то, что под именем?
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
05.05.2021, 18:44 6
C++
1
while (getline(DB, s))
Цитата Сообщение от dendikk Посмотреть сообщение
как я выведу то, что под именем?
Просто извлечёшь две последующие строки и выйдешь из цикла.
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
05.05.2021, 18:59  [ТС] 7
Вроде бы правильно написал, но даже имени не выводит(

C++
1
2
3
4
5
6
7
    while (getline(DB, s))
    {
        if (s == search_book)
        {
            cout << search_book;
        }
    }
s имеет тип данных string.
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
05.05.2021, 19:01 8
Тебе надо ещё разделять полученную строку - брать подстроку после двоеточия.
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
05.05.2021, 19:09  [ТС] 9
Работаю с файлами недавно, по этому не особо понимаю о чем речь
Можно детальней разъяснить как написать этот цикл, пожалуйста.
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
05.05.2021, 19:31 10
C++
1
if (s == "Имя: " + search_book)
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
05.05.2021, 19:36  [ТС] 11
Не работает(
Что здесь не так?

C++
1
2
3
4
5
6
7
while (getline(DB, s))
    {
        if (s == "Имя: " + search_book)
        {
            cout << s;
        }
    }
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
06.05.2021, 15:33  [ТС] 12
Нашел решение, вот только последний обьект:

Имя: Владислав
Название: 33
Год: 33

никак не могу вывести.

C++
1
2
3
4
5
6
7
8
if (line_b >= 0)
    {
        line_2_b = getcontent.find("Название книги:", line_b + 2);
        for (int i = line_b; i < line_2_b; i++)
        {
            cout << getcontent[i];
        }
    }
Кто подскажет?

Добавлено через 55 минут
Решение нашел, тема закрыта
0
06.05.2021, 15:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2021, 15:33
Помогаю со студенческими работами здесь

Заменить определённые строки из одного файла определёнными числами, и вывести их (коды) в другой файл
Привет всем! Недавно нашёл такую проблему. Нам задали сделать &quot;ассемблер&quot;, который просмотрит...

Считать строки с файла и поочередно вывести в консоль
Доброго времени суток. Существует файл, строки в котором записаны таким образом: Мне нужно...

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

Как прочитать из файла определенные строки?
нужно читать только 1-3 строку остальные читать не нужно как это сделает ? файл : number 56...

Как считать определённые строки из файла?
Доброго времени суток, дорогие форумчане. У меня возник следующий вопрос - как считать определенные...

Работа с файлами: вывести рандомную строку из файла
У меня имеется файл main.txt, в каждой строке этого файла записано слово из шести букв. Нужно,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru