1

私の理解では、演算子>>は左オペランドをcin >> x返すため、またはその他のエラーが発生した場合cinの値を返します。私の推測では、空白をスキップするため、次のような文字は保存されません。私がやりたいことは次のようなものです:falseEOFcin\n

int x;

while((cin >> x) and x != '\n')
    // do stuff

そのcinため、ストリーム内で改行に遭遇すると、入力ループを終了します (通常、たとえば で行うようにEOF)。

4

1 に答える 1

6

>>あなたが言うように、改行を含む空白をスキップするため、演算子を直接使用しても機能しません。

できることは、 を使用して 1 行を読み取ることです。std::getline次に、 を使用してその行からすべての入力を読み取ることができますstd::stringstream

std::string line;
if (std::getline(std::cin, line)) {
    std::istringstream ss(line);
    int x;
    while (ss >> x) {
        //....
    }
}
于 2012-11-18T13:15:42.583 に答える