这是我的函数调用:
removeTags(*buf, bufSize);
调用:
void removeTags(char* dataBlock, unsigned long size)
{
char* start = dataBlock;
char* end = dataBlock + size;
while(start < end)
{
//How do I replace the characters "\abc" with just nothing, ''.
}
我想要替换任何字符\ abc的实例。
答案 0 :(得分:2)
找到\abc
的实例后,只需将\abc
向后移动四个位置后移动所有字符(四个因为\abc
长四个字符)(可能使用memmove
)。
例如:
one two \abc three
<----^ copy everything from the 't' down backwards over the \abc
请注意,执行此操作后,您的end
指针将无效,因此您必须更新它。
可以使用strstr
的{{1}}或const char*
的{{1}}来查找字符串在另一个字符串中的位置。当然,如果您使用的是std::string::find
,那么您可以使用std::string
。
答案 1 :(得分:0)
通过向下移动所有以下字符来删除不需要的字符。
你应该能够通过一个from_pointer和一个to_pointer在一次传递中完成它,并将from_pointer中的当前值复制到to_pointer或者从from_pointer中增加以跳过你要省略的字符。
答案 2 :(得分:0)
如果这不是作业,您可以使用Boost库中的regex_replace。