почему происходит сбой std :: getline после использования оператора & gt; & gt; дважды?

У меня есть данный вход:

 local
127.0.0.1 localhost
other
next

Используя следующий код, на выходе я получаю пустое место Другой. Выход «вывод:»

#include <iostream>
using namespace std;

int main() {
std::string ip, domain, header;
std::getline(cin, header);
cin >> ip >> domain;
std::getline(cin, header);
std::cout << "output: " << header;
}

Тем не менее, я заметил, что эта проблема возникает при извлечении дважды (cin >> ip >> domain;) перед звонком std::getline, Код работает так, как я ожидал бы, если бы cin >> ip, Почему я вижу этот странный результат, когда я использую двойное извлечение (operator>>) с std::getline?

3

Решение

Поток operator>> извлекает пробел, который является до данные, которые он извлекает, а не после. Это означает, что он извлекает «localhost» в domain, но оставляет после новой строки в потоке. getline() затем читает только эту новую строку.

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector