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

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

Сообщение Anonymous »

Я пытаюсь итерации через строки текстового файла с помощью диапазонов. Кажусь достаточно прямолинейной, я сделал следующую функцию: < /p>

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

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 не имеет такого конструктора. Это казалось мне странным, поэтому я попытался сбросить Transform и вместо этого построить строки на лету:

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

auto iter_lines(std::ifstream& file)
{
auto lines = std::ranges::istream_view(file) |
std::views::lazy_split('\n');
return lines;
}
< /code>
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]

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