У меня есть данный вход:
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
?
Поток operator>>
извлекает пробел, который является до данные, которые он извлекает, а не после. Это означает, что он извлекает «localhost» в domain
, но оставляет после новой строки в потоке. getline()
затем читает только эту новую строку.
Других решений пока нет …