我想编写一个用于打开文件的程序,如果找到“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 ++,而且我是一名学习者。
答案 0 :(得分:0)
假设文件是全文,您可以使用strstr查找“Hello World”,然后设置字符串的结尾。
char *Found = strstr(buffer, "Hello World");
if (Found != NULL)
*Found = 0;
答案 1 :(得分:0)
首先有些问题!类型问题。
我没有这些答案。这取决于你,以及你的导师,如果这是家庭作业。
现在提出建议:使用C ++字符串(std :: string)而不是C风格的字符串。
在C中,您可以调用strstr
来查找该字符串的位置。如果找到,则在找到的位置写入0,或将strcpy
空字符串写入找到的位置。
在C ++中,您可以使用成员函数find
找到目标字符串的位置。如果找到,请使用成员函数erase
擦除找到位置处和之后的内容。
哪个函数/成员名称更有意义?从“Hello World”中删除哪种方法更有意义?您希望从现在起六个月后再使用哪种代码?