Следует использовать std :: ifstream и std :: ofstream использоваться с аргументом имени файла std :: string_view?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Следует использовать std :: ifstream и std :: ofstream использоваться с аргументом имени файла std :: string_view?

Сообщение Anonymous »

Я был удивлен, обнаружив, что следующий код не компилирован.

Код: Выделить всё

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())>
Параметры конструктора включают аргументы типа const char* и std :: string & .
Я был удивлен Не находить вариант включает в себя std :: string_view . Есть ли какая -то очевидная причина, почему это не было включено? Преобразование из string_view в const char* не может быть особенно безопасной, поскольку string_view не может быть завершен в конце его .size () .
Создание строки , с другой стороны, вызовет дополнительную копию и распределение.

Подробнее здесь: https://stackoverflow.com/questions/794 ... w-filename
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»