搜索/替换c ++中字符指针指向的字符数组

时间:2011-05-30 17:35:02

标签: c++ visual-c++ pointers

这是我的函数调用:

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的实例。

3 个答案:

答案 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