提问人:Ryan Moeller 提问时间:7/19/2019 更新时间:7/19/2019 访问量:88
从失败的读取中恢复 ifstream
Recover ifstream from failed read
问:
我目前有一段代码,它使用 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;
}
答: 暂无答案
评论
ignore
std::istringstream
istringstream
encodeLine