[英]why does std::getline fails after using operator>> twice?
我有给定的输入:
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;
}
但是,我注意到在调用std::getline
之前提取两次( cin >> ip >> domain;
)时会出现此问题。 如果我有cin >> ip
,代码就像我期望的那样工作。 当我使用std::getline
双提取( operator>>
)时,为什么会看到这个奇怪的结果?
流operator>>
提取它提取的数据之前的空白,而不是之后。 这意味着它将“localhost”提取到domain
,但在流中跟随换行符。 getline()
然后只读取这个换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.