3

我有一个要过滤的数组。

例子:

str = "hellothere"filter = "eo"。当我需要过滤时该怎么办?

void filter_str(char* str, char* filter, char*result)
{
  while(*str)
  {
       if() //If the current character in str is one to be filter. 
        {
                 *str++;
        }
        else
        {
                *result++ = *str++;
        }

 } 
 *result = '\0';
}

我只是不知道如何检查当前字符是否是需要过滤的字符。由于过滤器可以是多个字符,例如“eo”。如何检查每个循环的“e”和“o”,然后在开始时将过滤器重置回“e”。

我想创建一个指向过滤器开头的指针,然后在最后使用它返回过滤器的开头。但我不知道如何让它检查 *str 对所有要过滤的字符。

4

2 回答 2

1

在这种情况下,已经编写了一个可以为您完成艰苦工作的函数

if (strchr(filter, *str))

一般来说,这是对任何处理过于复杂而无法处理的问题的答案。编写一个函数来解决“内部”问题,然后在“外部”问题中使用该函数。在这种情况下,内部问题是在字符串中查找字符,外部问题是您正在执行的过滤操作。你很幸运,内心的问题已经为你解决了。

于 2012-10-23T06:31:42.570 回答
0

如果您想知道一个字母是否在 中filter,“简单”的方法(不使用 STL 函数)将是遍历元素filter并检查它们中的每一个,看看您是否找到了您正在寻找的字符。

while(*str)
{
    bool found = false;
    // For each element in filter {
        // If *str == element {
            found = true;
            break; // This function gets you out of the 'for' loop
        }
    }

    if(found) //If the current character in str is one to be filter. 
    {

您可以在评论中填写伪代码

于 2012-10-23T06:36:28.590 回答