[急救]fstream对象如何读取一个更新中的文件?
需求如下:
程序A输出内容到 res.txt
程序B启动时,定位到 res.txt的末尾,然后不断读取res.txt中新出现的行。
fsFile.open(strResFileNm.c_str(), fstream::in | fstream::app);
fsFile.seekg(0, fsFile.end);
while (TRUE)
{
....
fsFile.getline(szBuff, sizeof(szBuff), '\n');
...
}
就停住了。
难道B打开文件的时候,只能读取到打开之前的res.txt内容?A不断写进去的读不到吗?
该如何实现呢?
[解决办法]
fstream::app,这个每次操作都会定位到文件末尾,末尾哪有数据呢?
很明显应该用ate,只在打开时定位到末尾一次就可以了,后续就是不停的读。
另外,fstream是有EOF标记位的,你恰好读到末尾那接下来的getline都会直接返回失败,你必须clear恢复一下flag.