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;ただし、 を呼び出す前に( ) を 2 回抽出すると、この問題が発生することに気付きましたstd::getline。コードは、私が持っていた場合に期待どおりに機能しcin >> ipます。で double extract( operator>>)を使用すると、この奇妙な結果が表示されるのはなぜstd::getlineですか?

4

1 に答える 1

6

ストリームは、抽出したデータの後ではなく前にoperator>>ある空白を抽出します。これは、「localhost」を に抽出することを意味しますが、ストリーム内の改行の後に残ります。次に、この改行だけを読み取ります。domaingetline()

于 2013-03-27T15:31:37.917 に答える