С
curlpp вы создадите компактную утилиту, которая надёжно загружает файлы по HTTP и отображает индикатор прогресса прямо в терминале.В этой задаче:
• Проводит загрузку быстро и без лишних пауз;
• Выводит статус работы прямо в окне консоли;
• Обеспечивает понятную обработку ошибок без лишних заморочек.
Используйте этот подход в своих проектах и экономьте время на загрузках каждый день.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Это не просто учебник, а визуальная карта: ты вводишь тему, и сразу видишь список лучших ресурсов для погружения. Можно строить свой путь обучения. А ещё всё открыто и развивается сообществом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5❤3
Пишем свой assert с логированием и stacktrace!
Сейчас научимся создавать удобный макрос
Начнём с подключения библиотек из стандарта C++23 — ничего дополнительно не ставить не нужно:
Теперь объявим функцию-обёртку, которая будет бросать исключение с нужными данными:
И сам макрос, использующий эту функцию:
Давайте проверим на примере:
При запуске получим:
🔥 Таким образом ты получаешь собственный
📣 C++ Ready | #практика
Сейчас научимся создавать удобный макрос
ASSERT, который при провале проверки выводит не только выражение и место в коде, но и подробный stacktrace. Это пригодится для быстрой отладки и локализации ошибок в сложных проектах.Начнём с подключения библиотек из стандарта C++23 — ничего дополнительно не ставить не нужно:
#include <iostream>
#include <stdexcept>
#include <source_location>
#include <stacktrace>
Теперь объявим функцию-обёртку, которая будет бросать исключение с нужными данными:
void assert_fail(const char* expr,
const std::source_location& loc = std::source_location::current()) {
std::cerr << "ASSERTION FAILED: (" << expr << ")\n"
<< " at " << loc.file_name() << ":" << loc.line()
<< " in " << loc.function_name() << "\n"
<< "Stacktrace:\n" << std::stacktrace::current() << "\n";
std::terminate();
}
И сам макрос, использующий эту функцию:
#define ASSERT(expr) \
((expr) ? void(0) : assert_fail(#expr))
Давайте проверим на примере:
int factorial(int n) {
ASSERT(n >= 0);
return n <= 1 ? 1 : n * factorial(n - 1);
}
int main() {
std::cout << "5! = " << factorial(5) << "\n";
std::cout << "(-1)! = " << factorial(-1) << "\n"; // вызовет ASSERT
return 0;
}При запуске получим:
5! = 120
ASSERTION FAILED: (n >= 0)
at example.cpp:8 in factorial()
Stacktrace:
#0 factorial() at example.cpp:8
#1 main() at example.cpp:14
#2 __libc_start_main
...
🔥 Таким образом ты получаешь собственный
assert с детальным логом и стек-трейсом — никакой потери контекста при отладке и быстрый поиск причины крашей.Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍10🔥6🤝1
Когда обычный текст превращается в матрицу пикселей, этот инструмент без усилий создаёт чёткий QR-код, сохраняет его в PNG и подготавливает для мгновенного использования.
В этой задаче:
• Быстро генерируется изображение для мобильного сканирования;
• Минимум зависимостей — один заголовочный файл и PNG-кодек;
• Лёгко интегрируется в любой C++-проект без сложных сборок.
Проверьте, как просто получить готовый QR-код и делиться ссылками мгновенно!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54❤13👍4🤝1
Проверки префиксов, суффиксов и вхождений стали ясными и надёжными без громоздких приёмов и ручных вычислений, экономя время и снижая число ошибок.
В этом гайде:
• Проверки текста без лишних вычислений всего одной функцией;
• Пишем код яснее и понятнее буквально за пару строк;
• Текстовые проверки быстрыми и надёжными буквально в один вызов.
Используйте новый подход, чтобы писать лаконичный, надёжный и быстро понятный код при работе с текстом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍8❤7
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤6👍4🤝1
Проверки на этапе компиляции — static_assert!
С C++11 можно валидировать условия ещё на этапе компиляции — до запуска программы. Если
Подключаем заголовок с трейтом типов для последующих проверок:
Простейшая проверка: убеждаемся, что
В шаблонах
🔥 Это ваш первый фильтр ошибок, ловите некорректные условия сразу при сборке!
📣 C++ Ready | #практика
С C++11 можно валидировать условия ещё на этапе компиляции — до запуска программы. Если
static_assert не выполняется, компилятор выдаст понятное сообщение об ошибке.Подключаем заголовок с трейтом типов для последующих проверок:
#include <type_traits>
Простейшая проверка: убеждаемся, что
int занимает хотя бы 4 байта в целевой системе:static_assert(sizeof(int) >= 4, "int должен быть не менее 4 байт");
В шаблонах
static_assert помогает выдавать информативные ошибки: при попытке check_float<int>() компиляция не пройдёт:template<typename T>
void check_float() {
static_assert(std::is_floating_point_v<T>, "T должен быть плавающим типом");
}
int main() {
check_float<double>(); // OK
// check_float<int>(); // приведёт к ошибке: "T должен быть плавающим типом"
}
🔥 Это ваш первый фильтр ошибок, ловите некорректные условия сразу при сборке!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤8👍3
Утилита на C++ с помощью
libgit2 выводит N последних коммитов вместе с автором, временем и кратким сообщением в понятном консольном формате.В этой CLI-утилите:
• Помогает быстро просматривать историю важных изменений проекта;
• Упрощает командную строку и избавляет от лишних действий;
• Позволяет всегда видеть автора и время каждого коммита.
Этот инструмент станет отличным дополнением к рабочему процессу C++ проектов и ускорит анализ изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍5❤4🤝1