// 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'?
它将分隔符留在输入缓冲区中,因此您读取的下一个字符将是换行符。但是请注意,大多数提取器会在提取任何内容之前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
。