moon58654 发表于 2024-3-28 11:33:50

mfc cstring字符串查找多个内容,找到就返回真。


mfc cstring字符串查找多个内容,找到就返回真。

要从CString中查找多个内容并返回布尔值,你可以使用Find方法多次,每次查找一个不同的子字符串。如果所有子字符串都被找到,你可以返回true;否则,返回false。以下是一个示例函数,它接受一个CString和一个字符串数组,并检查CString是否包含数组中的所有字符串:

#include <afxwin.h>
#include <vector>
#include <algorithm>

bool FindAllSubstringsInCString(const CString& str, const std::vector<CString>& substrings)
{
    // 遍历所有要查找的子字符串
    for (const auto& substr : substrings)
    {
      // 如果找不到任何一个子字符串,则返回false
      if (str.Find(substr) == -1)
      {
            return false;
      }
    }
    // 如果所有子字符串都被找到,则返回true
    return true;
}
int main()
{
    CString mainString(_T("This is a sample string with multiple words."));
    std::vector<CString> substringsToFind;
    substringsToFind.push_back(_T("sample"));
    substringsToFind.push_back(_T("multiple"));
    substringsToFind.push_back(_T("words"));

    // 调用函数查找所有子字符串
    bool allFound = FindAllSubstringsInCString(mainString, substringsToFind);

    // 输出结果
    if (allFound)
    {
      AfxMessageBox(_T("All substrings found!"));
    }
    else
    {
      AfxMessageBox(_T("One or more substrings not found."));
    }

    return 0;
}
在这个例子中,FindAllSubstringsInCString函数接受一个CString(str)和一个CString向量(substrings),该向量包含要查找的所有子字符串。函数遍历substrings向量,并使用Find方法检查str是否包含每个子字符串。如果str不包含任何一个子字符串,函数会立即返回false。如果所有子字符串都被找到,函数会返回true。

请注意,这个实现假设substrings向量中的字符串是唯一的,即没有重复的字符串。如果有重复的字符串,并且你只想检查str是否至少包含一次每个唯一的子字符串,你可能需要在将子字符串添加到substrings向量之前先进行去重操作。

页: [1]
查看完整版本: mfc cstring字符串查找多个内容,找到就返回真。