如何在 C++ 中将文本追加到文本文件?

问题描述 投票:0回答:5

如何在 C++ 中向文本文件追加文本?如果新的文本文件尚不存在,则创建一个新的文本文件;如果存在,则将文本附加到该文件。

c++ filestream
5个回答
379
投票

您需要指定追加打开模式,如

#include <fstream>

int main() {  
  std::ofstream outfile;

  outfile.open("test.txt", std::ios_base::app); // append instead of overwrite
  outfile << "Data"; 
  return 0;
}

18
投票

我使用这个代码。它确保文件不存在时被创建,并且还添加了一些错误检查。

static void appendLineToFile(string filepath, string line)
{
    std::ofstream file;
    //can't enable exception now because of gcc bug that raises ios_base::failure with useless message
    //file.exceptions(file.exceptions() | std::ios::failbit);
    file.open(filepath, std::ios::out | std::ios::app);
    if (file.fail())
        throw std::ios_base::failure(std::strerror(errno));

    //make sure write fails with exception if something is wrong
    file.exceptions(file.exceptions() | std::ios::failbit | std::ifstream::badbit);

    file << line << std::endl;
}

15
投票
 #include <fstream>
 #include <iostream>

 FILE * pFileTXT;
 int counter

int main()
{
 pFileTXT = fopen ("aTextFile.txt","a");// use "a" for append, "w" to overwrite, previous content will be deleted

 for(counter=0;counter<9;counter++)
 fprintf (pFileTXT, "%c", characterarray[counter] );// character array to file

 fprintf(pFileTXT,"\n");// newline

 for(counter=0;counter<9;counter++)
 fprintf (pFileTXT, "%d", digitarray[counter] );    // numerical to file

 fprintf(pFileTXT,"A Sentence");                   // String to file

 fprintf (pFileXML,"%.2x",character);              // Printing hex value, 0x31 if character= 1

 fclose (pFileTXT); // must close after opening

 return 0;

}

2
投票

您可以使用

fstream
并使用
std::ios::app
标志打开它。看看下面的代码,它应该会让你头脑清醒。

...
fstream f("filename.ext", f.out | f.app);
f << "any";
f << "text";
f << "written";
f << "wll";
f << "be append";
...

您可以在此处找到有关开放模式的更多信息,并在此处找到有关 fstream 的更多信息。


2
投票

你也可以这样做

#include <fstream>

int main(){   
    std::ofstream ost {outputfile, std::ios_base::app};
    
    ost.open(outputfile);
    ost << "something you want to add to your outputfile";
    ost.close();
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.