Почему take(n), используемый в istream_view, приводит к пропуску следующего токена в C++20?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему take(n), используемый в istream_view, приводит к пропуску следующего токена в C++20?

Сообщение Anonymous »

В C++20, когда я использую std::ranges::views::take() для std::ranges::istream_view(), следующий токен в istream_view после итерации представление дубля пропускается.
Рассмотрим следующий фрагмент кода C++20:

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

#include 
#include 
#include 
#include 
#include 

namespace rn = std::ranges;

int main() {
std::string input = "1 2 3 4 5 6 7 8 9 10";
std::istringstream input_stream(input);

std::vector head;
rn::copy(rn::istream_view(input_stream) | rn::views::take(5),
std::back_inserter(head));

int next_int = 0;
input_stream >> next_int;

for(auto x : head) std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78663215/why-does-taken-used-on-an-istream-view-cause-it-to-skip-the-next-token-in-c2[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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