C и C++ Flow | Авторский IT канал
440 subscribers
420 photos
227 links
👾 Авторский канал про C и C++: уроки, обучение, код, алгоритмы, структуры данных и советы по программированию для начинающих и опытных разработчиков.

🔮 Владелец: @NemoSab
Download Telegram
🔥 Сегодня в уроке — мини-анкета с сохранением результатов

Нужен быстрый опрос без сложных библиотек и UI. В разборе показан минимальный набор кода чтобы собрать данные и надёжно дописать их в файл в читаемом формате.

⭐️ C и C++ Flow | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔥 Как работает std::sample

В этом посте расскажу про std::sample() и как правильно её использовать.

Обычно эту функцию используют для:
✓ Случайной выборки
✓ Подготовки тестов
✓ Быстрых подсказок

⭐️ C и C++ Flow | #метод
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Выберите ответ
Anonymous Quiz
48%
true
29%
false
10%
1
14%
3
🔥5
🔥 Чтение конфигурации из .ini файла

Покажу простой способ прочитать .ini с ключами вида section.key=value и собрать результат в удобную структуру.

Сначала подготовим типы данных и функцию разбиения строки по символу равно.
#include <string>
#include <unordered_map>
#include <fstream>
#include <sstream>

using Cfg = std::unordered_map<std::string, std::string>;

std::pair<std::string, std::string> splitEq(const std::string& s) {
auto p = s.find('=');
if (p == std::string::npos) return {s, ""};
return {s.substr(0, p), s.substr(p + 1)};
}


Теперь читаем файл построчно пропускаем пустые и комментарии и собираем ключи section.key.
Cfg loadIni(const std::string& path) {
Cfg cfg;
std::ifstream in(path);
std::string line, section;
while (std::getline(in, line)) {
if (line.empty()) continue;
if (line[0] == '#' || line[0] == ';') continue;
if (line.front() == '[' && line.back() == ']') {
section = line.substr(1, line.size() - 2);
} else {
auto kv = splitEq(line);
std::string key = section.empty() ? kv.first : section + "." + kv.first;
cfg[key] = kv.second;
}
}
return cfg;
}


Финальный шаг получаем значение по ключу и используем дефолт если его нет.
std::string getOr(const Cfg& c, const std::string& k, const std::string& d) {
auto it = c.find(k);
if (it == c.end()) return d;
return it->second;
}

int main() {
auto cfg = loadIni("app.ini");
std::string host = getOr(cfg, "server.host", "127.0.0.1");
std::string port = getOr(cfg, "server.port", "8080");
std::cout << host << " " << port << "\n";
}


🧩 Такой формат читабелен и прост в поддержке. Если нужно больше контроля добавь трим пробелов и валидацию типов на этапе чтения.

⭐️ C и C++ Flow | #авторский
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🔥 Сегодня в уроке — проверка корректности скобок

Проверка скобок нужна, чтобы не кормить парсер битой строкой и рано отбрасывать ошибки. В уроке собран минимальный код, который легко вставить в валидацию перед разбором выражения.

⭐️ C и C++ Flow | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
🔥 На собеседованиях по C++ часто спрашивают, когда срабатывает копирующее присваивание.

⭐️ C и C++ Flow | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🔥 Как сменить текущую директорию

Полезно для:
✓ Временных файлов
✓ Запуска подпроцессов
✓ Тестовой изоляции

Смена рабочей директории упрощает доступ к нужным ресурсам без длинных путей. Держите в голове что операция влияет на весь процесс и все потоки.

⭐️ C и C++ Flow | #трюк
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🔥 Сегодня в уроке — пул объектов для уменьшения аллокаций

Пул снижает давление на аллокатор и ускоряет горячие пути, где создаются однотипные объекты. В карточках разобран минимальный шаблон выдачи по индексу и ручной буфер с выравниванием для случаев, когда нужен полный контроль.

⭐️ C и C++ Flow | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔥 На собесе по C++ часто спрашивают про ODR и типичные ошибки со множественными определениями.

⭐️ C и C++ Flow | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM