删除文件的一部分?

时间:2012-06-26 06:47:25

标签: c++

我想编写一个用于打开文件的程序,如果找到“Hello World”,程序会自动将“Hello World”之前的文本复制到新文件中。

问题是,如何在'缓冲区'中删除文本'hello world',例如:

  buffer = new char [Size];

  ifstream fstr;

  fstr.open(path, ios::in);

  fstr.read(buffer, (Size));

  fstr.close();

  //what should i write here about copying the rest of the text except 

  //Hello World? 

  ofstream outputFile(path2, ios::out);

  outputFile << buffer;

  outputFile.close();

感谢您帮助我:)顺便说一下,我正在使用Borland C ++,而且我是一名学习者。

2 个答案:

答案 0 :(得分:0)

假设文件是​​全文,您可以使用strstr查找“Hello World”,然后设置字符串的结尾。

char *Found = strstr(buffer, "Hello World"); 
if (Found != NULL) 
   *Found = 0;

答案 1 :(得分:0)

首先有些问题!类型问题。

  1. 如果文件不包含“Hello World”怎么办?
  2. 如果它包含“Hello World”怎么办?
  3. 如果它包含“Hello World”,但“World”从下一行开始怎么办?
  4. 我没有这些答案。这取决于你,以及你的导师,如果这是家庭作业。

    现在提出建议:使用C ++字符串(std :: string)而不是C风格的字符串。

    在C中,您可以调用strstr来查找该字符串的位置。如果找到,则在找到的位置写入0,或将strcpy空字符串写入找到的位置。

    在C ++中,您可以使用成员函数find找到目标字符串的位置。如果找到,请使用成员函数erase擦除找到位置处和之后的内容。

    哪个函数/成员名称更有意义?从“Hello World”中删除哪种方法更有意义?您希望从现在起六个月后再使用哪种代码?