Код: Выделить всё
auto example_function(std::string_view filename) {
std::fstream ofile(filename, std::ios_base::out | std::ios_base::binary);
std::fstream ifile(filename, std::ios_base::in | std::ios_base::binary);
}
< /code>
Обе эти строки создают аналогичные ошибки. < /p>
error: no matching function for call to ‘std::basic_fstream::basic_fstream(std::string_view&, std::_Ios_Openmode)’
error: ‘class std::basic_string_view’ has no member named ‘make_preferred’
= decltype(std::declval().make_preferred().filename())>
error: no matching function for call to ‘std::basic_fstream::basic_fstream(std::string_view&, std::_Ios_Openmode)’
error: ‘class std::basic_string_view’ has no member named ‘make_preferred’
= decltype(std::declval().make_preferred().filename())>
Я был удивлен Не находить вариант включает в себя std :: string_view . Есть ли какая -то очевидная причина, почему это не было включено? Преобразование из string_view в const char* не может быть особенно безопасной, поскольку string_view не может быть завершен в конце его .size () .
Создание строки , с другой стороны, вызовет дополнительную копию и распределение.
Подробнее здесь: https://stackoverflow.com/questions/794 ... w-filename