我目前有一段代码,可以使用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;
}