Сообщение Re: чистка путей от 15.08.2023 21:38
Изменено 15.08.2023 21:39 Sm0ke
Re: чистка путей
Здравствуйте, Евгений Музыченко
Вы не хотите светить полные пути в бинарнике, так?
Идея вот в чём. Пишем consteval функцию, которая возвращает std::array
В функции мы от std::string_view{__FILE__} откусываем начальные пути из указанного перечня
И копируем остаток в результирующий std::array
Я проверил бинарник на содержание путей. Тема рабочая для vs community 2022 (и clang 16, судя по asm-у в готболте)
Из минусов: приходится указывать в функции что откусываем, но это не идёт в бинарник.
Вы не хотите светить полные пути в бинарнике, так?
Идея вот в чём. Пишем consteval функцию, которая возвращает std::array
В функции мы от std::string_view{__FILE__} откусываем начальные пути из указанного перечня
И копируем остаток в результирующий std::array
Я проверил бинарник на содержание путей. Тема рабочая для vs community 2022 (и clang 16, судя по asm-у в готболте)
#include <iostream>
#include <string_view>
#include <array>
#include <algorithm>
using namespace std::literals::string_view_literals;
using omg = std::array<char, 100>;
consteval omg
so_path(std::string_view path)
{
std::array cut{
"/app"sv,
"/omg"sv
};
for( std::string_view it : cut )
{
if( path.starts_with(it) )
{
path.remove_prefix( it.size() );
break;
}
}
omg ret{};
std::ranges::copy( path, ret.begin() );
return ret;
}
constexpr omg
g_path = so_path(__FILE__);
int main()
{
std::cout << g_path.data() << '\n';
return 0;
}
Из минусов: приходится указывать в функции что откусываем, но это не идёт в бинарник.
Re: чистка путей
Здравствуйте, Евгений Музыченко
Вы не хотите светить полные пути в бинарнике, так?
Идея вот в чём. Пишем consteval функцию, которая возвращает std::array
В функции мы от std::string_view{__FILE__} откусываем начальные пути из указанного перечня
И копируем остаток в результирующий std::array
Я проверил бинарник на содержание путей. Тема рабочая для vs community 2022 (и clang 16, судя по asm-у в готболте)
Чек: https://godbolt.org/z/8bWvqPM1v
Из минусов: приходится указывать в функции что откусываем, но это не идёт в бинарник.
Вы не хотите светить полные пути в бинарнике, так?
Идея вот в чём. Пишем consteval функцию, которая возвращает std::array
В функции мы от std::string_view{__FILE__} откусываем начальные пути из указанного перечня
И копируем остаток в результирующий std::array
Я проверил бинарник на содержание путей. Тема рабочая для vs community 2022 (и clang 16, судя по asm-у в готболте)
Чек: https://godbolt.org/z/8bWvqPM1v
#include <iostream>
#include <string_view>
#include <array>
#include <algorithm>
using namespace std::literals::string_view_literals;
using omg = std::array<char, 100>;
consteval omg
so_path(std::string_view path)
{
std::array cut{
"/app"sv,
"/omg"sv
};
for( std::string_view it : cut )
{
if( path.starts_with(it) )
{
path.remove_prefix( it.size() );
break;
}
}
omg ret{};
std::ranges::copy( path, ret.begin() );
return ret;
}
constexpr omg
g_path = so_path(__FILE__);
int main()
{
std::cout << g_path.data() << '\n';
return 0;
}
Из минусов: приходится указывать в функции что откусываем, но это не идёт в бинарник.