3

我有给定的输入:

 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. 为什么我在使用 double extract( operator>>) with时会看到这个奇怪的结果std::getline

4

1 回答 1

6

Stream提取在它提取的数据之前operator>>的空白,而不是之后。这意味着它将“localhost”提取到中,但在流中跟随换行符。然后只读取这个换行符。domaingetline()

于 2013-03-27T15:31:37.917 回答