相关疑难解决方法(0)

如何在C++中阅读不断增长的文本文件?

我试图从正在增长的文件(类似于什么tail -F)中读取,但我的代码必定存在一些问题:

string   log, logFile("test.log");
size_t   p = 0;

while(true)
{
    ifstream ifs(logFile.c_str());

    ifs.seekg(p);  //*1

    while(ifs.eof() == false)
    {
        getline(ifs, log);

        cout << log << endl;

        p = ifs.tellg();  //*2
    }

    nanosleep(&pause, NULL);
}
Run Code Online (Sandbox Code Playgroud)

如果没有//*1和//*2的行,日志文件会被正确读取到最后,但是如果添加新行,则不会发生任何事情.

使用seekg和tellg我试图存储文件的当前结束位置,这样当我重新打开它时,我可以去那里并阅读已添加的内容.

我想知道我的代码有什么问题,如果真的有必要为此目的关闭并重新打开同一个文件.

谢谢.

c++ logging fstream stl seekg

10
推荐指数
2
解决办法
7083
查看次数

标签 统计

c++ ×1

fstream ×1

logging ×1

seekg ×1

stl ×1