c ++重新格式化文件在到达结束之前中止

时间:2016-01-14 02:28:59

标签: c++ file istream

我是这里的新手!虽然这段代码完成输出大部分文件,但在它结束之前就已中止,出了什么问题? (2VI3是坐标的巨大数据文件)。

有人可以推荐更好的编写此代码的方法吗?

Load

1 个答案:

答案 0 :(得分:1)

我发现代码至少存在三个问题:

1

while (!iFile.eof())

这种阅读文件的方法is always wrong

2

分配了2000个字符串的数组。没有明确检查从输入文件读取的实际行数。据说该文件非常大。文件中很可能有超过2000行,这将导致堆损坏和未定义的行为。

3

对代码逻辑的更全面的回顾揭示了这样一个事实:首先将整个文件读入内存缓冲区是完全没有必要的!完全一行读取输入文件,然后将相应的输出行写入输出文件,并简单地跟踪当前读取的行数就足够了。整个array可以完全消除。这不是必需的。