/
Maksim_Sadovnikov
/
FinalQualifyingWork
Обзор
Документация
Войти
/
Maksim_Sadovnikov
/
FinalQualifyingWork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ModuleTest/component_7/src/c7_file_4.cpp
82 строки
3 KB
Maksim_Sadovnikov
Tests
29 апр 2025, 23:55
29 апр 2025, 23:55
9e0495f
Код
Авторство
О чём код?
#include <component_7/include/c7_file_4.h> #include <iostream> #include <vector> #include <string> #include <regex> #include <boost/algorithm/string.hpp> #include <boost/regex.hpp> namespace c_7_file_4 { // Compute and print factorials at runtime constexpr auto compute_factorials() { std::array<unsigned long long, 10> arr{}; [&arr]<std::size_t... I>(std::index_sequence<I...>) { ((arr[I] = Factorial<I>::value), ...); }(std::make_index_sequence<arr.size()>{}); return arr; } void print_factorials() { const auto facts = compute_factorials(); std::cout << "Factorials: "; for (auto v : facts) std::cout << v << ' '; std::cout << std::endl; } void test_templates() { // Test Fibonacci constexpr depth constexpr unsigned f10 = fib(10); std::cout << "fib(10) = " << f10 << std::endl; // TypeList and Length using MyList = GenerateInts<20>::type; std::cout << "Length of TypeList<20> = " << Length<MyList>::value << std::endl; // Tuple processing auto tup = std::make_tuple(1, 2.5, 'c', std::string("test")); TupleProcessor<decltype(tup)>::process(tup); // SFINAE check std::cout << "Is 10 even? " << IsEven<int, 10>::value << std::endl; std::cout << "Is 11 even? " << IsEven<int, 11>::value << std::endl; // Regex-based method 1: email validation auto validate_email = [](const std::string& email) { static const std::regex pattern(R"(([\w.%+-]+)@([\w.-]+)\.([A-Za-z]{2,6}))"); return std::regex_match(email, pattern); }; std::cout << "Email valid? " << validate_email("test@example.com") << std::endl; // Regex-based method 2: extract numbers auto find_all_numbers = [](const std::string& text) { std::vector<std::string> nums; static const std::regex pattern(R"((\d+(?:\.\d+)?))"); std::smatch match; std::string s = text; while (std::regex_search(s, match, pattern)) { nums.push_back(match.str()); s = match.suffix(); } return nums; }; auto nums = find_all_numbers("Value: 100 and 3.14"); std::cout << "Numbers: "; for (auto& n : nums) std::cout << n << ' '; std::cout << std::endl; // Boost-based method 3: split string auto split_boost = [](const std::string& text) { std::vector<std::string> result; boost::split(result, text, boost::is_any_of(",;")); return result; }; auto parts = split_boost("one,two;three"); std::cout << "Split: "; for (auto& p : parts) std::cout << p << ' '; std::cout << std::endl; // Boost-based method 4: IPv4 validation auto boost_validate_ipv4 = [](const std::string& ip) { static const boost::regex pattern(R"(^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$)"); return boost::regex_match(ip, pattern); }; std::cout << "IPv4 valid? " << boost_validate_ipv4("192.168.0.1") << std::endl; } }