Разделение содержимого файла с использованием диапазонов C++20C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разделение содержимого файла с использованием диапазонов C++20

Сообщение Anonymous »

Я пытаюсь перебрать строки текстового файла, используя диапазоны:

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

auto iter_lines(std::ifstream& file)
{
auto lines = std::ranges::istream_view(file) |
std::views::lazy_split('\n') |
std::views::transform([](auto&& line)
{
return std::string(line.begin(), line.end());
});
return lines;
}
Я получаю ошибку компиляции, сообщающую, что std::string не имеет такого конструктора. Я попробовал отказаться от преобразования и вместо этого создавать строки на лету:

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

auto iter_lines(std::ifstream& file)
{
auto lines = std::ranges::istream_view(file) |
std::views::lazy_split('\n');
return lines;
}

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

std::ifstream file("myfile.txt");
for (const auto& line : iter_lines(file))
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79782122/splitting-file-content-using-c20-ranges[/url]
Ответить

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

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

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

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

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