C++ 为什么std::getline在使用运算符后失败>&燃气轮机;两次?

C++ 为什么std::getline在使用运算符后失败>&燃气轮机;两次?,c++,operators,getline,extraction,C++,Operators,Getline,Extraction,我有给定的输入: local 127.0.0.1 localhost other next 使用以下代码,输出是空白的,我希望其他。输出为“输出”: #包括 使用名称空间std; int main(){ std::字符串ip、域、头; std::getline(cin,标题); cin>>ip>>域; std::getline(cin,标题); 调用std::getline之前,std::cout ip>>domain;)。如果我有cin>>ip,代码会像我所期望的那样工作。为什么我使

我有给定的输入:

 local
 127.0.0.1 localhost
 other
 next
使用以下代码,输出是空白的,我希望其他。输出为“输出”:

#包括
使用名称空间std;
int main(){
std::字符串ip、域、头;
std::getline(cin,标题);
cin>>ip>>域;
std::getline(cin,标题);

调用
std::getline
之前,std::cout ip>>domain;
)。如果我有
cin>>ip
,代码会像我所期望的那样工作。为什么我使用双重提取(
操作符>
)时会看到这种奇怪的结果使用
std::getline

操作符>
提取其提取的数据之前的空白,而不是之后的空白。这意味着它将“localhost”提取到
域中
,但在流中保留新行之后。
getline()
然后只读取这一新行。

您的输入中有空行吗?请使用代码格式设置帖子的格式,使其明确无误。这是正确的。当我使用
std::getline(cin,header);
两次时,我得到了正确的结果。谢谢。
#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;
}