有关C++处理大文件的有关问题

有关C++处理大文件的问题
做项目时遇到一个问题不知道怎么解决,希望有经验的专家给点意见。
    现在要做一个程序处理大批量的文件,每天数据量大概500G,分为很多个文件,最小的是几十兆,一般大的不会超过一个G。写程序处理这些文件的时候,每行数据都要分析,这样势必要读文件->写文件,会占用很多的I/O。
    上网找了一些资料,其中有一个方法貌似可行,就是windows的文件内存映射,相当于整个文件就返回一个字符串的指针,这样做的话我需要在每行后加一些信息,问题就简化为修改一个超长超长的字符串,在其中加入很多信息。
    这样修改字符串,就会遇到一个很严重的问题,在这个超长的字符串中增加和删除字符,首先要将修改位置后的字符串后移,然后再插入,效率非常低。这可如何是好?
c++ windows

------解决方案--------------------
我以前也处理过一些比较大的文件,当时是linux下软件记录的调试日志,1~8G的都有。我需要从这些log中找出原始数据信息来重新模拟整个运行过程。
我那个log的格式算是比较好的,可以逐行处理,所以用python脚本逐行读取数据,然后用正则表达式匹配提取原始信息。总体上来说,一遍扫描下来,速度还算理想。
一般来说,如果数据可以切分成更小的块,每一块的数据是独立的(至少要没有向后依赖性),那么就可以读一块,处理一块。你说你要在每行后添加信息,看起来跟我情况很相似,应该可以用同样的方式处理吧。
windows文件存储的机制决定了我们无法轻松地在中间删除哪怕1个字节内容,所以,如果你真要修改这些文件,我建议你还是一边解析旧文件,一边将处理后的内容写入到新文件中,然后用新文件替换旧文件。
顺便废话一句,python拿来处理这种文本任务真是太方便了,一个for line in open("filename")就可以逐行处理了。