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

Pointers/C-Strings in C++. How to filter the strings?

本文关键字:字符串 过滤 何过滤 C++ 中的 指针      更新时间:2023-10-16

我有一个数组要过滤。

例:

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 = '';
}

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

我想制作一个指向过滤器开头的指针,然后在 while 结束时使用它返回到过滤器的开头。但是我不确定如何让它针对要过滤的所有字符检查 *str。

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

if (strchr(filter, *str))

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

如果你想知道一个字母是否在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. 
{

您可以在注释中填写伪代码