C++ 在文件内容更改后,使用ifstream读取同一文件(直到EOF)

C++ 在文件内容更改后,使用ifstream读取同一文件(直到EOF),c++,file-io,seekg,C++,File Io,Seekg,要求: 我必须一直读到EOF(16字节a 特定文件中的时间),以及 然后说睡眠5秒钟。现在, 5秒钟后,当我尝试阅读时 从文件(其内容将 已被添加到),该 预期设计必须以这种方式进行 它从它的 左上角,然后再次扫描 EOF之前的内容(每次16字节) 到达 我已经编写了(基本)代码,使用ifstream从给定文件读取(直到每次EOF-16字节),如下所示: #include <stdio.h> #include <fstream> #include <iostre

要求:


我必须一直读到EOF(16字节a 特定文件中的时间),以及 然后说睡眠5秒钟。现在, 5秒钟后,当我尝试阅读时 从文件(其内容将 已被添加到),该 预期设计必须以这种方式进行 它从它的 左上角,然后再次扫描 EOF之前的内容(每次16字节) 到达

我已经编写了(基本)代码,使用ifstream从给定文件读取(直到每次EOF-16字节),如下所示:

#include <stdio.h> 
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;


int main() 
{ 

    int fd, i, j, length, pos;
    char buffer[100][16];
    ifstream Read;
    std::ostringstream oss;
    int current_position = 0;
    Read.open("from4to5", ios::binary);

    //Get the size of the file
    Read.seekg(0, ios::end);
    length = Read.tellg();
    Read.seekg(0, ios::beg);


    for(i=0; i<length; i++)
    {

         buffer[i][16] = '\0';
    }

    //Read the file in 16byte segments or eof(), whichever comes first
    //Testing the return condition of the function is preferred, as opposed to testing eof()

    while(Read.get(buffer[i], 17))
    {
        for(j=0; j<=16; j++)
            oss << buffer[i][j];
        cout << "Contents : " << oss.str() << endl;
        oss.seekp(0);
        i++;
    }



    // Output is :
    // Contents : BD8d3700indiaC#E
    // Contents : BD6d4700godgeD3E
    // Contents : BD9d1311badge3TE


    return 0;
}
您必须:
保存您的位置
关闭文件
重新打开文件
找到你保存的位置并继续阅读,直到EOF
你必须:
保存您的位置
关闭文件
重新打开文件

查找保存的位置并继续阅读,直到EOF

您应该能够清除输入流上的EOF标志并继续阅读

while (true)
{
    while(Read.get(buffer[i], 17))
    {
        for(j=0; j<=16; j++)
                oss << buffer[i][j];
        cout << "Contents : " << oss.str() << endl;
        oss.seekp(0);
        i++;
    }
    Read.clear();
    sleep(5);
}
while(true)
{
while(Read.get(buffer[i],17))
{

对于(j=0;j,您应该能够清除输入流上的EOF标志并继续读取

while (true)
{
    while(Read.get(buffer[i], 17))
    {
        for(j=0; j<=16; j++)
                oss << buffer[i][j];
        cout << "Contents : " << oss.str() << endl;
        oss.seekp(0);
        i++;
    }
    Read.clear();
    sleep(5);
}
while(true)
{
while(Read.get(buffer[i],17))
{

对于(j=0;ja文件不是在两个进程之间进行通信的最佳工具。你应该研究使用套接字。我知道,如果我使用套接字,我会不那么困惑,但这是针对我们必须使用文件的项目。文件不是在两个进程之间进行通信的最佳工具。你应该研究使用套接字。我知道,我会的如果我使用了套接字,就不会那么困惑了,但这是针对一个必须使用文件的项目。已解决-感谢所有帮助。这里的代码:Mirror:已解决-感谢所有帮助。这里的代码:Mirror:我必须问一句,这个方法(Read.clear())不起作用吗?如果是的话,这是一个比我更好的答案:)我不得不问,这个方法(Read.clear())不是很有效吗?如果是的话,这是一个比我更好的答案:)