C ++将字符串写入文件的开头

时间:2014-12-13 10:11:46

标签: c++ string

我有一个类似

的文件
  

这是第1行

     

这是第2行

我有一个字符串This is line 0。如何将此字符串写入文件的开头,以便文件的内容现在为:

  

这是第0行

     

这是第1行

     

这是第2行

我目前有

ifstream myfile("lunch.txt");
myfile.seekg(0,ios::beg);
myfile << "This is line 0";

但它没有按预期工作。

2 个答案:

答案 0 :(得分:1)

写入std::ifstream(用于输入)无效。更改代码以使用std::ofstream来编写输出:

   ofstream myfile("lunch.txt");
// ^^^^^^^^
   // myfile.seekg(0,ios::beg); <<< this code isn't necessary
   myfile << "This is line 0";

要解决有关在现有内容之前插入的问题,请先阅读文件,同时将内容保存在例如一个std::vector<std::string> lines;。然后再次打开文件,写下第一行,然后跟上lines中保存的值。

答案 1 :(得分:0)

您无法插入文件的开头并让现有内容自动移动。

最好的办法是打开一个新文件并写下“这是第0行”,然后复制现有文件的内容。