我正在编写一个C++14程序,从文件中加载文本字符串,对其进行一些计算,然后将结果写入另一个文件。我使用的是Linux系统,并且文件相对较大(O(10^6行))。我的典型方法是使用旧的C中的
更新:为了更清楚地解释用例:对于输入文件的每一行,我将执行一些文本操作(数据清理等)。每行都是独立进行处理的。因此,加载整个输入文件(或至少其中的大块),逐行处理,然后再将其写入,似乎是最合理的。这个理想的抽象应该是获取一个指向读入缓冲区的迭代器,每行作为一个条目。有没有使用std :: ifstream的推荐方法来做到这一点?
getline
和 sscanf
工具来读取和解析输入,以及fprintf(FILE*, ...)
来写入输出文件。这种方式虽然可行,但我想知道是否有更好的方法,能够在高性能下运行并符合我所使用的现代C++标准的推荐方式。我听说iostream
速度很慢;如果这是真的,我想知道是否有更推荐的方法。更新:为了更清楚地解释用例:对于输入文件的每一行,我将执行一些文本操作(数据清理等)。每行都是独立进行处理的。因此,加载整个输入文件(或至少其中的大块),逐行处理,然后再将其写入,似乎是最合理的。这个理想的抽象应该是获取一个指向读入缓冲区的迭代器,每行作为一个条目。有没有使用std :: ifstream的推荐方法来做到这一点?