С какими библиотеками C++ вы работали?

«С какими библиотеками C++ вы работали?» — вопрос из категории C++ Core, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Помимо стандартной библиотеки (STL), я активно использовал следующие библиотеки и фреймворки:

1. Boost: Это практически "расширенная стандартная библиотека". Я применял различные компоненты:

  • Boost.Asio для асинхронного сетевого и низкоуровневого I/O программирования.
  • Boost.Filesystem (теперь в std::filesystem) для кроссплатформенной работы с путями и файловой системой.
  • Boost.Spirit для написания парсеров прямо в C++ коде.
  • Boost.Optional, Boost.Variant (прототипы std::optional, std::variant).

    // Пример: асинхронный TCP-клиент с Boost.Asio
    #include <boost/asio.hpp>
    using boost::asio::ip::tcp;
    
    void async_connect(tcp::socket& socket, const std::string& host) {
        tcp::resolver resolver(socket.get_executor());
        auto endpoints = resolver.resolve(host, "http");
        boost::asio::async_connect(socket, endpoints,
            [](boost::system::error_code ec, tcp::endpoint) {
                if (!ec) std::cout << "Connected!n";
            });
    }

2. Фреймворки для GUI: Для разработки десктопных приложений работал с Qt. Использовал его сигналы-слоты, виджеты, модель представления для QTableView, а также QML для декларативного UI.

3. Специализированные библиотеки:

  • OpenSSL/libcrypto для реализации криптографических протоколов (TLS, хэши, шифрование).
  • Protocol Buffers (protobuf) для сериализации структурированных данных и межпроцессного взаимодействия (RPC).
  • gRPC как высокопроизводительный RPC-фреймворк поверх HTTP/2.
  • SQLite как встраиваемую СУБД для локального хранения данных.

4. Инструменты для сборки и тестирования: CMake для управления сборкой, Google Test для модульного тестирования, Conan как менеджер пакетов C++.