// file.in
12
13
// main.cpp
fstream f("file.in", ios::in);
int n;
char c;
f >> n;
f.get(&c);
提取数字12后,下一个字符是什么?是换行还是'1'?如果我调用getline的getline,我会得到一个空行还是'13'?
答案 0 :(得分:2)
它将分隔符留在输入缓冲区中,因此您读取的下一个字符将是一个换行符。但请注意,大多数提取器会在提取的任何内容之前跳过空格(包括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
和fstream
之间存在差异。