Ответы пользователя по тегу C++
  • Как построчно сравнить два файла txt?

    @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 комментария
  • С помощью какой библиотеки можно нарисовать окно произольной формы?

    @gth-other
    Зависит от задачи. Если простой графический интерфейс, то вполне хватит QT. Если нужна высокая производительность, то можно взять упомянутый SDL2.
    Ответ написан
    Комментировать
  • Как при помощи Magick++ загрузить JPG изображение в градациях серого?

    @gth-other Автор вопроса
    Разобрался. Решение может и не самое оптимальное, но работает. Для всех, кто (возможно) придет сюда из гугла:
    std::vector<float> load_jpg(const std::string& file_location) {
        Magick::Image image;
        image.read( file_location);
        image.type(Magick::TrueColorType);
        image.colorspaceType(Magick::sRGBColorspace);
        size_t width = image.baseColumns();
        size_t height = image.baseRows();
        std::vector<float> vector(width * height);
        Magick::ColorRGB colour;
        for (size_t row = 0; row < height; row = row + 1) {
            for (size_t column = 0; column < width; column = column + 1) {
                colour = image.pixelColor(row, column);
                vector[row * width + column] = (float)(0.2126 * colour.red() + 0.7152 * colour.green() + 0.0722 * colour.blue());
            }
        }
        return vector;
    }
    Ответ написан
  • Как загрузить JPG файл в массив пикселей при помощи библиотеки libjpeg (C++)?

    @gth-other Автор вопроса
    Разобрался. Использовал библиотеку Magick++.
    Ответ написан
    Комментировать