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

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

Сообщение Anonymous »

Я новичок в концепции C ++ 20 диапазонов, и я пытался возиться с ними, чтобы выяснить, как они работают. Кажусь достаточно прямолинейной, я сделал следующую функцию: < /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]
Ответить

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

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

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

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

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