見trent.josephsen's回答:
您不能在磁盤上的文件開始處插入數據。您需要將整個文件讀入內存,在開始時插入數據,然後將整個文件寫回磁盤。 (這是不是唯一的方法,但由於該文件不是太大,它可能是最好的。)
您可以通過使用std::ifstream
輸入文件和std::ofstream
輸出文件達到這樣。之後,您可以使用std::remove
和std::rename
,以取代舊文件:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
int main(){
std::ofstream outputFile("outputFileName");
std::ifstream inputFile("inputFileName");
std::string tempString;
outputFile << "Write your lines...\n";
outputFile << "just as you would do to std::cout ...\n";
outputFile << inputFile.rdbuf();
inputFile.close();
outputFile.close();
std::remove("inputFileName");
std::rename("outputFileName","inputFileName");
return 0;
}
不使用remove
或rename
使用std::stringstream
另一種方法:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
int main(){
const std::string fileName = "outputFileName";
std::fstream processedFile(fileName.c_str());
std::stringstream fileData;
fileData << "First line\n";
fileData << "second line\n";
fileData << processedFile.rdbuf();
processedFile.close();
processedFile.open(fileName.c_str(), std::fstream::out | std::fstream::trunc);
processedFile << fileData.rdbuf();
return 0;
}
爲什麼要使用C++的呢? –
[在C++中,在文本文件的開頭插入一行的正確方法是什麼?](http://stackoverflow.com/questions/4179349/in-c-what-is-the-proper插入一行文本的開頭) –
看起來像是重複的,但其他問題沒有很好的答案。 –