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 ,我会得到一个空行还是'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;
}

我不希望在这样的事情中看到 astringstream和 an之间的区别fstream

于 2012-05-31T23:22:08.267 回答