1

Тема: Робота з файлами та рядками С++

Доброго часу доби. Допоможіть розібратися. Даний текстовий файл. З клавіатури вводиться слово. Видалити з файлу всі рядки, які містять введене слово. Заздалегідь вдячний!

2

Re: Робота з файлами та рядками С++

Читати файл по рядках як масив.
Як є збіг перезаписати файл без рядка, і так в циклі до кінця файлу.

Подякували: eyromenko1

3

Re: Робота з файлами та рядками С++

Droid 77 написав:

Читати файл по рядках як масив.
Як є збіг перезаписати файл без рядка, і так в циклі до кінця файлу.

Дякую, звичайно, але в мене з реалізацією проблема) Думав може хто підкаже.

4 Востаннє редагувалося Droid 77 (09.10.2022 21:25:37)

Re: Робота з файлами та рядками С++

Що не виходить, працювати з файлами чи з масивами?
Як і те і інше. Почитайте як читати та записувати текстові файли для початку. Коли це опануєте. Переходьте до масивів та пошуку значень в масивах.

Подякували: eyromenko1

5

Re: Робота з файлами та рядками С++

Ну, оскільки ви не виклали жодних напрацювань, то єдине, що вам можна порадити - це прочитати підручник і написати код.
Якщо у вас щось із кодом не те - питайте.

6

Re: Робота з файлами та рядками С++

/* Даний текстовий файл. З клавіатури вводиться слово. 
// Видалити з файлу всі рядки, які містять введене слово. */

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <fstream>
#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
    std::string file_name("file.txt");
    std::string str_found;
    std::string str;
    std::cout << "enter a word";
    std::cin >> str_found;
    std::ifstream infile;
    infile.open(file_name);
    if(!infile.is_open()) 
    {
        perror("Error open");
        exit(EXIT_FAILURE);
    }
    std::vector<std::string> lines;
    while (std::getline(infile,str))
    {
        size_t found = str.find(str_found);
        if (found == std::string::npos)
        {
            //std::cout << "First occurrence is " << found << std::endl;
            lines.push_back(str);
        }
    }
    infile.close();

    std::ofstream outfile;
    outfile.open(file_name, std::ios::out | std::ios::trunc);
    for (std::size_t i;i < lines.size(); i++)
    {
        outfile << lines.at(i) << std::endl; 
    }
    outfile.close();
    return 0;
}