在C ++中双倍隔开同一个文件

时间:2014-07-26 00:11:05

标签: c++ file-io

我编写了一些代码,以便在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;
}

2 个答案:

答案 0 :(得分:0)

按照建议,创建一个临时文件,然后,只有在处理成功时,remove现有文件和rename临时文件。

顺便说一句,将using namespace std放在每个程序的顶部是a bad habit,你应该做好避免。

答案 1 :(得分:0)

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

更好的解决方案:打开读取和写入的第一个文件(fstream)并用stringstream缓冲区替换内容,甚至不创建临时文件(也更快) )。

你有很多选择。