Архив рубрики: Заметки по языку с и с++

Различные заметки по языку с/с++

Модульное, интеграционное и системное тестирование в C++

Тестирование — критически важная часть разработки программного обеспечения, особенно в C++, где ручное управление памятью и сложные абстракции могут приводить к трудноуловимым ошибкам. В этой статье мы рассмотрим три основных уровня тестирования: модульное, интеграционное и системное, их особенности и реализацию в C++. 1. Модульное тестирование (Unit Testing) Модульное тестирование — это проверка отдельных компонентов (модулей) программы… Читать далее »

Подключение популярных фреймворков тестирования к Qt-проекту

Qt поддерживает встроенное тестирование через QTest, но при разработке на C++ часто возникает необходимость использовать внешние фреймворки: Google Test, Catch2, Doctest, Boost.Test. В этой статье сравниваются и описываются способы их подключения к проекту на Qt (с использованием CMake и qmake). Общие условия Для всех фреймворков тестирования предполагается: 1. QTest — встроенный фреймворк Qt Подключение: qmake:… Читать далее »

Умные указатели в C++: unique_ptr, shared_ptr, weak_ptr

Умные указатели (smart pointers) — это объекты-обертки для «сырых» указателей (raw pointers), которые автоматически управляют временем жизни динамически выделенной памяти. Они были введены в стандарт C++11 для решения проблем с утечками памяти и висячими указателями, которые часто возникают при ручном управлении памятью. Основные типы умных указателей Стандартная библиотека C++ предоставляет три основных типа умных указателей:… Читать далее »

Алгоритмы сортировки: сравнение и анализ на си/c++

Сортировка данных — одна из самых важных задач в программировании. Различные алгоритмы сортировки отличаются по эффективности, сложности реализации и области применения. В этой статье мы рассмотрим реализацию популярных алгоритмов сортировки на C++ (с использованием Qt для вывода результатов), а также подробно разберём понятие временной и пространственной сложности алгоритмов. Сложность алгоритмов: обозначения и расшифровка «O» (О-большое) — асимптотическая… Читать далее »

Сравнение std::array и QVector: какой контейнер выбрать?

В C++ и Qt есть множество контейнеров для хранения данных. Два часто используемых варианта — это std::array из STL и QVector из Qt. Оба обеспечивают удобный доступ к элементам и поддержку итераторов, но их философия и предназначение различаются. В этой статье мы разберем различия, преимущества и сценарии использования std::array и QVector. Краткое описание std::array QVector… Читать далее »

Работа с файловой системой в Qt C++: Класс QDir

QDir — это удобный класс из библиотеки Qt, предназначенный для управления каталогами и получения информации о файлах. Он позволяет работать с путями, создавать, удалять и фильтровать файлы и папки, а также получать списки содержимого. Основные возможности QDir Подключение QDir Получение текущего каталога с помощью QDir Изменение текущего каталога с помощью QDir Получение списка файлов с… Читать далее »

QFileInfo — получение информации о файлах

Класс QFileInfo предоставляет подробную информацию о файле или каталоге: имя, расширение, размер, дату изменения, абсолютный путь и многое другое. Подключение QFileInfo Основные свойства QFileInfo Проверка типа файла с помощью QFileInfo Дата создания и изменения Абсолютный и относительный путь Проверка доступности с помощью QFileInfo Полезные методы QFileInfo Метод Назначение fileName() Имя файла absoluteFilePath() Полный путь size()… Читать далее »

QFile — работа с файлами в Qt C++

Класс QFile — это универсальный интерфейс для работы с файлами. С его помощью можно читать, записывать, копировать, удалять файлы, а также проверять их существование. Подключение QFile Чтение текста из файла с помощью QFile Запись текста в файл с помощью QFile Добавление текста (Append) с помощью QFile Проверка существования и удаление с помощью QFile Копирование файла… Читать далее »

QMessageBox в Qt C++ — расширенное руководство

QMessageBox — это удобный виджет из Qt для отображения диалогов с сообщениями. Он широко используется для вывода ошибок, предупреждений, вопросов и информации. Но помимо базовых возможностей, у QMessageBox есть расширенные функции, которые позволяют гибко его настраивать. Базовое использование QMessageBox Возвращаемое значение — обработка ответа QMessageBox Пользовательские кнопки в QMessageBox Использование иконок и подробного текста в… Читать далее »

Диапазон хранения значений

Для получения максимального и минимального значения мы запросим их через std::numeric_limits  — которая обеспечивает стандартизированный способ запроса различных свойств арифметических типов. К таким данным можно отнести: Получаем следующий вывод через qDebug: Как видим переменные типа float и double не совсем читабельно вывелись. Внесем изменения.