2015-11-07 120 views
0

我已经创建了一个代码写入.txt文件的东西,并从中读取。但是如果我关闭程序并重新开始写入,它将删除旧文本并用新文本覆盖它。如何在C++中保存.txt文件?

有没有办法不覆盖现有的数据?

#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

void check() { 

    string text; 
    ifstream file; 
    file.open("test.txt"); 
    getline(file, text); 

    if (text == "") { 
     cout << "There's no data in file" << endl; 
    } else { 
     cout << "File contains:" << endl; 
     cout << text << endl; 
    } 
} 

int main() { 

    check(); 

    string text; 
    ofstream file; 
    file.open("test.txt"); 
    cout << "Type some text" << endl; 
    getline(cin, text); 
    file << text; 

    return 0; 
} 
+0

嗨,请显示您尝试过的一些代码,然后我们可以尝试帮助您 –

+0

您所说的这个“问题”是什么?这听起来像是按照预期工作。 –

+0

我发布了我的代码 –

回答

2

您需要在下面的例子中打开该文件在“追加”模式一样

#include <fstream> 

int main() { 
    std::ofstream outfile; 

    outfile.open("yourfile.txt", std::ios_base::app);//std::ios_base::app 
    outfile << "your data"; 
    return 0; 
} 

你可以在这里阅读关于fstream的标志
http://www.cplusplus.com/reference/fstream/fstream/open/

0

请插入下次编码。如果您以写入模式打开文件,而不是每次写入文件时都正常,文件的内容就会改变。你需要使用追加模式。

1

请记住,在C++中有几种文件数据打开,保存和读取的方式。这听起来像你用一个函数(及其选项)打开以始终创建一个新文件。你可以做的一件事是运行程序,然后关闭程序并使用文本编辑器打开文件以验证写入文件的文本是否真的存在。另外看看Evyatar提供的代码。这个例子使用了允许读,写和追加选项的ofstream。 “app”参数告诉程序保留文件中已有的内容,并追加下一次运行中添加的任何新数据。在测试您要添加的文件时,请注意,最终不会得到一个您不打算拥有这么大文件的大文件。

0

在您发布在修订后的问题中的代码中,请务必在检查功能中和程序结束时关闭该文件。如果你不这样做,可能会把事情挂掉。作为预防措施,我通常在打开文件之前关闭一个文件,以确保它没有问题关闭。这种做法来自我在BASIC编程的日子,在那里它是必不可少的。如果程序崩溃,直到关闭它才能再次打开它。另外,当然,在完成之后和程序结束之前关闭文件。然后,当你在main中打开它时,用append选项打开。

相关问题