ifstream in("test.txt");
istream_iterator it(in); // 構造迭代器
string line;
getline(in, line); // 讓不到第一行第一個詞
istream_iterator 構造時會**立即從流中提取第一個元素**(調用 operator>>),將流讀取位置推進到第一個詞**之後**。隨後 getline 從當前位置讀取,自然丟失首詞。
#include
#include
#include
using namespace std;
int main() {
ofstream("test.txt") << "hello world\nsecond line";
ifstream in("test.txt");
// 註釋下行即可正常讀取首行
istream_iterator it(in);
string line;
getline(in, line);
cout << "line: [" << line << "]" << endl; // 輸出 " world" 或 "second line"
}
string line;
getline(in, line); // 讀完整行
stringstream ss(line); // 行內解析
istream_iterator it(ss), end;
vector words(it, end);
in.seekg(0); // 回到流開頭
getline(in, line);
mmap 或一次性 read 全文內存解析。