从失败的读取中恢复ifstream

时间:2019-07-18 18:56:39

标签: c++ iostream ifstream

我目前有一段代码,可以使用ifstream从文件中读取文本。该文件的每一行对应于必须编码为结构的不同数据。我的“ encodeLine”功能可以解决这个问题。

为了安全起见,我希望我的系统能够处理太大而无法容纳其变量的数据。例如,如果将数字999999999读短,我希望程序能够继续读取其余行。

当前,当我遇到这样的数据时,我打印出“ ERROR”并清除流。但是,当我执行更多读取时,读取的数据已损坏。例如,在下一行应读取数字“ 1”,但应读取诸如27021之类的内容。

如何重置ifstream以继续进行有效读取?

这是我的代码:

ifstream inputStream;
inputStream.open(foo.txt);
char token[64];

int totalSize = 0;

// Priming read
inputStream >> token;

while(inputStream.good())
{
    // Read and encode line of data from file
    totalSize = totalSize + encodeLine(inputStream, &recordPtr, header, filetypeChar)

    if(!inputStream.eof() && !inputStream.good())
    {
         printf("ERROR");
         inputStream.clear();
    }
    else if(inputStream.eof())
    {
         break;
    }

    inputStream >> token;
}

0 个答案:

没有答案