Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Как построчно сравнить два файла txt?
@yurchik322

Как построчно сравнить два файла txt?

Ребят доброго времени суток!
Как сравнить два файла txt построчно то есть брал первую строчку из файла 1 и сравнил со всеми сточками файла 2 потом со второй сточкой также и т. д и если есть одинаковые значения то записать их отдельно
Сколько не искал в интернете не мог найти нужное.
Пожалуйста помогите
  • Вопрос задан
  • 771 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@gth-other
Иначе говоря, нужно записать строчки, встречающиеся в обоих файлах, в другой файл? Если да, то вот:
#include <iostream>
#include <fstream>
#include <vector>


int main() {
    std::string path_first;
    std::string path_second;
    std::string path_result;

    std::cout << "Введите путь к первому файлу: ";
    std::getline(std::cin, path_first);

    std::cout << "Введите путь ко второму файлу: ";
    std::getline(std::cin, path_second);

    std::cout << "Введите путь к файлу, где следует разместить результат: ";
    std::getline(std::cin, path_result);


    std::ifstream file_first(path_first);
    std::ifstream file_second(path_second);
    std::ofstream file_result(path_result);

    if (!file_first.is_open() or !file_second.is_open() or !file_result.is_open()) {
        std::cout << "Не удалось открыть файл." << std::endl;
    }
    else {
        std::vector<std::string> lines_first;
        std::vector<std::string> lines_second;

        std::string buff;

        while (std::getline(file_first, buff)) lines_first.push_back(buff);
        while (std::getline(file_second, buff)) lines_second.push_back(buff);

        for (auto line_first : lines_first) {
            for (auto line_second : lines_second) {
                if (line_first == line_second) file_result << line_first << "\n";
            }
        }
    }

    file_first.close();
    file_second.close();
    file_result.close();

    return 0;
}

Требует загрузки обоих файлов в память и работает относительно медленно, но что-то мне подсказывает, что этого хватит.
Ответ написан
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Забавно, без малого год назад я уже отвечал на этот же вопрос от другого пользоватля. Слово в слово этот же!
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Первое. Тема топика Python + PowerShell. Тоесть непонятно тебе нужно программировать и развивать этот софт или решить задачу 1 раз и забыть. В зависимости от желания - будет разная реализация.

Второе. Есть коробочные утилиты fc (Windows) diff (Linux) которые такое сравнение делают. Но обычно для исходников и при условии что изменений мало. Почитай про них. Возможно это частично решит твою задачу.

Третье. Ты хочешь сравнивать одну строку со всеми из другого файла. Это декартово произведение. В данном случае тебе можно сортировать оба файла и тогда одинаковые значения будут кластеризованы рядом. Sort + Diff решают твою беду.

Вобщем думай. Но лучше 1 раз сделай покрывающий пример двух файлов. И результат чего надо на выходе. Это сэкономит время.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы