2014-12-13 123 views
0

的开始我有一个文件,它是像C++写入字符串文件

这是第1行

这是第2行

和我有一个字符串This is line 0。我如何写这个字符串转换成文件,使文件的内容的开头现在:

这是行0

这是1号线

这是2号线

我现在有

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

但它不是一个工作预计。

+1

因为您需要移动其余部分以适合新行。 – 2014-12-13 10:13:13

回答

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中保存的值。

+0

但是,此代码将覆盖文件的开头。问题是如何在文件的开头插入内容。 – Weston 2014-12-13 10:20:57

+0

@韦斯顿我不是盖过这个吗? – 2014-12-13 10:23:51

+0

哦,是的 - 对不起,回合..! :)没有看到那部分第一次。你以后添加了吗?无论如何,你是对的。只有我的评论是,如果原始文件的大小可能非常大,那么将它读入矢量可能是一个问题。 – Weston 2014-12-13 10:28:50

0

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

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