0

我想编写一个可以打开文件的程序,如果我找到“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++,我是一名学习者。

4

2 回答 2

0

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

char *Found = strstr(buffer, "Hello World"); 
if (Found != NULL) 
   *Found = 0;
于 2012-06-26T07:01:10.493 回答
0

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

  1. 如果文件不包含“Hello World”怎么办?
  2. 如果它包含“Hello World”怎么办?
  3. 如果它包含“Hello World”,但“World”从下一行开始怎么办?

这些我都没有答案。如果这是家庭作业,这取决于你和你的导师。

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

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

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

哪个函数/成员名称更有意义?从“Hello World”中删除哪种方法更有意义?从现在起六个月后,您更愿意回到哪个代码?

于 2012-06-26T07:10:54.920 回答