Size: a a a

2021 March 01

R

Roman in C++ Together 2.0
Wild_Wind
Перегруженный оператор деления, который в этом контексте является кроссплатформенным сепаратором директорий.
А, ну значит так все таки ... Я мскал на сайтп, перегружен ли этот оператор, но не увидел инфы
источник

W

Wild_Wind in C++ Together 2.0
Danya
Только там наверное fs::path вместо string_view
Емнип, у fs::path есть перегрузка оператора string_view.
источник

W

Wild_Wind in C++ Together 2.0
Roman
А, ну значит так все таки ... Я мскал на сайтп, перегружен ли этот оператор, но не увидел инфы
источник

D

Danya in C++ Together 2.0
Wild_Wind
Емнип, у fs::path есть перегрузка оператора string_view.
Ну у тебя с одной стороны вьюха, с другой литерал
Не должно работать
источник

W

Wild_Wind in C++ Together 2.0
Danya
Ну у тебя с одной стороны вьюха, с другой литерал
Не должно работать
Емнип, работало, и был неявный каст.
источник

D

Danya in C++ Together 2.0
Wild_Wind
Емнип, работало, и был неявный каст.
Не знаю как правда)
источник

W

Wild_Wind in C++ Together 2.0
Но это не точно. Уже не помню.
источник

W

Wild_Wind in C++ Together 2.0
Danya
Не знаю как правда)
Мне лень с мобилы проверять.
источник

R

Roman in C++ Together 2.0
В твоем примере не обязательно же создавать указаткли на пути?
Можно ведь сражу в условие запихнуть?
источник

W

Wild_Wind in C++ Together 2.0
Roman
В твоем примере не обязательно же создавать указаткли на пути?
Можно ведь сражу в условие запихнуть?
Нельзя.
Иначе без проверки, что getenv вернул не nullptr, ты получишь херню/уб/конструктор_строки_от_nullptr.
Лучше проверять.
источник

R

Roman in C++ Together 2.0
@shiz01
Вместо этого:

char* ptr_home = std::getenv("HOME");

if(ptr_home)
   path = std::string_view{ptr_home} / ".appname";

Вот так:

if(std::getenv("HOME"))
   path = std::string_view{ptr_home} / ".appname";
источник

W

Wild_Wind in C++ Together 2.0
Roman
@shiz01
Вместо этого:

char* ptr_home = std::getenv("HOME");

if(ptr_home)
   path = std::string_view{ptr_home} / ".appname";

Вот так:

if(std::getenv("HOME"))
   path = std::string_view{ptr_home} / ".appname";
А ptr_home где?
Или ты хочешь два раза вызов getenv делать?
источник

W

Wild_Wind in C++ Together 2.0
Поверить понитер на не nullptr горазло дешевле, чем сгонять в api системы и попросить указатель на значенете env.
источник

R

Roman in C++ Together 2.0
источник

W

Wild_Wind in C++ Together 2.0
Вроде, в свежих плюсах можно это в один if засунуть, но я все время забываю тот упоротый синтаксис.
источник

W

Wild_Wind in C++ Together 2.0
static inline constexpr std::string_view home_env_var{"HOME"};

if(char* home_ptr = std::getenv(home_env_var.data())){
    /*...*/
}
источник

W

Wild_Wind in C++ Together 2.0
Попробуй так.
источник

R

Roman in C++ Together 2.0
Wild_Wind
static inline constexpr std::string_view home_env_var{"HOME"};

if(char* home_ptr = std::getenv(home_env_var.data())){
    /*...*/
}
Завтра надо посмотреть будет, я уже убрал ноут.
источник

R

Roman in C++ Together 2.0
источник

W

Wild_Wind in C++ Together 2.0
Roman
Завтра надо посмотреть будет, я уже убрал ноут.
Я тоже :)
источник