C ++中的指针/ C字符串。如何过滤字符串?

时间:2012-10-23 06:28:04

标签: c++ arrays pointers c-strings

我有一个要过滤的数组。

示例:

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”。

我想指向过滤器的开头,然后在while结束时使用它返回过滤器的开头。但我不知道如何检查* str来反对所有要过滤的字符。

2 个答案:

答案 0 :(得分:1)

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

if (strchr(filter, *str))

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

答案 1 :(得分: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. 
    {

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