我有一个要过滤的数组。
示例:
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来反对所有要过滤的字符。
答案 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.
{
您可以在评论中填写伪代码