3
// file.in
12
13

// main.cpp
fstream f("file.in", ios::in);
int n;
char c;
f >> n;
f.get(&c);

数字の12を抽出した後、次の文字は何ですか?改行ですか、それとも「1」ですか。getline instread of getを呼び出すと、空の行または「13」が表示されますか?

4

1 に答える 1

3

入力バッファに区切り文字が残るため、次に読み取る文字は改行になります。ただし、ほとんどのエクストラクタは、抽出する前に空白(を含むnew-line)をスキップするため、このような呼び出しを行わない限り、通常は表示されないことに注意してください。getline

編集:ideoneのようなものでテストするには、:の使用を検討してstringstreamください。

#include <sstream>
#include <iostream>

int main(){ 
    std::istringstream f("12\n13");
    int n;
    char c;
    f >> n;
    f.get(c); // get takes a reference, not a pointer. Don't take the address.

    std::cout << "'" << c << "'";
    return 0;
}

stringstreamこのようなものでaとanの違いが見られるとは思いませんfstream

于 2012-05-31T23:22:08.267 に答える