我需要逐行读取文件,它是由std :: getline完成的.问题是另一个过程一直在向它添加数据,然后我需要读取新行.
例如,文件首先包含10行,我的程序读取10行,然后我的程序应该等待.不久之后,另一个进程在文件中附加了5行,然后我的程序读取了5行.
我试过这个,但它不起作用:
int main() {
ifstream ifs("test.txt");
string line;
while(1) {
while(std::getline(ifs, line)) {
cout << line << endl;
}
Sleep(50);
}
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?谢谢.
当流到达文件末尾并设置错误标志时.如果设置了错误标志,则流将不执行任何读取操作.假设您可以打开文件冷却同时读取和写入(例如POSIX系统上的情况),您could清除()`状态标志并轮询流.你可能包括一个合适的等待.
没有标准的C++接口可用于在文件更改时接收某些信号.可能最好使用适当的IPC机制,例如管道,只要仍有一个写入过程,它就会在尝试接收更多数据时阻塞.