在C+中对同一文件使用两倍间距+; 我编写了一些代码,以便在C++中对一个文件进行双倍空间,目前程序只接收一个文件,返回一个不同的文件,即双间隔。我希望程序将相同的文件返回到文件目录。在这一点上我很好,我需要使用一个临时文件,这很好,但我希望在程序结束时最终返回相同的文件(但给用户两倍的间距)。任何帮助都将不胜感激。这是到目前为止我的代码 #include <fstream> #include <iostream> #include <cstdlib> using namespace std; int main( ) { ifstream fin; ofstream fout; fin.open("story.txt"); if (fin.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout.open("numstory.txt"); if (fout.fail( )) { cout << "Output file opening failed.\n"; exit(1); } char next; int n = 1; fin.get(next); fout << n << " "; while (! fin.eof( )) { fout << next; if (next == '\n') { fout << endl; } fin.get(next); } fin.close( ); fout.close( ); return 0; } #包括 #包括 #包括 使用名称空间std; int main() { 流鳍; 流式流量计; 财务公开(“story.txt”); if(fin.fail()) { cout

在C+中对同一文件使用两倍间距+; 我编写了一些代码,以便在C++中对一个文件进行双倍空间,目前程序只接收一个文件,返回一个不同的文件,即双间隔。我希望程序将相同的文件返回到文件目录。在这一点上我很好,我需要使用一个临时文件,这很好,但我希望在程序结束时最终返回相同的文件(但给用户两倍的间距)。任何帮助都将不胜感激。这是到目前为止我的代码 #include <fstream> #include <iostream> #include <cstdlib> using namespace std; int main( ) { ifstream fin; ofstream fout; fin.open("story.txt"); if (fin.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout.open("numstory.txt"); if (fout.fail( )) { cout << "Output file opening failed.\n"; exit(1); } char next; int n = 1; fin.get(next); fout << n << " "; while (! fin.eof( )) { fout << next; if (next == '\n') { fout << endl; } fin.get(next); } fin.close( ); fout.close( ); return 0; } #包括 #包括 #包括 使用名称空间std; int main() { 流鳍; 流式流量计; 财务公开(“story.txt”); if(fin.fail()) { cout,c++,file-io,C++,File Io,按照您的建议,创建一个临时文件,然后仅在处理成功后,删除现有文件并重命名该临时文件 顺便说一下,将使用名称空间std放在每个程序的顶部是您最好避免的。最简单的解决方案:删除输入文件并重命名新文件(和) 更好的解决方案:打开第一个文件进行读写()并用缓冲区替换内容,甚至不创建临时文件(速度也更快) 你有很多选择。你说的更好,我说的更快,但原子性更少(如果磁盘刷新失败,或者你的程序在写入过程中终止,你的SOL是因为你正在写入同一个文件)。这取决于哪个对你更重要。我同意,一般来说,我更喜欢避免依赖文件

按照您的建议,创建一个临时文件,然后仅在处理成功后,
删除现有文件并
重命名该临时文件


顺便说一下,将
使用名称空间std
放在每个程序的顶部是您最好避免的。

最简单的解决方案:删除输入文件并重命名新文件(和)

更好的解决方案:打开第一个文件进行读写()并用缓冲区替换内容,甚至不创建临时文件(速度也更快)


你有很多选择。

你说的更好,我说的更快,但原子性更少(如果磁盘刷新失败,或者你的程序在写入过程中终止,你的SOL是因为你正在写入同一个文件)。这取决于哪个对你更重要。我同意,一般来说,我更喜欢避免依赖文件(甚至不在临时目录中)在一个目录中,或者必须设置操作系统特定的设施(例如,存在性检查)才能使用它们。我也一直在做“使用名称空间std”除非开始使用更大的项目,对于简单的Hello World程序,使用整个STD命名空间可能是可以的,我们都是在开始学习C++的时候这样做的)@ CordyDy:更好的选择可能是使用代码:使用STD::CUT/<代码>来拉入你真正要使用的东西。