将数组匹配分配给字符串

Assigning an array match to a string

本文关键字:字符串 分配 数组      更新时间:2023-10-16

我的程序有两个存储的数组和一个未分配的字符串:

std::string array1 = "red blue green white";
std::string array2 = "white purple yellow red";
std::string str = "";

我可以使用array1.find(array2)查找是否有匹配,但是我如何获得匹配并将匹配分配给std::string str

寻找解决方案,如下所示:

if (array1.find(array2)) str = match;

您可以使用 string::substr和a for循环查找您的哪个条目。

示例:

std::string theString = "red blue green white";
std::vector<std::string> vectStr = {"white", "purple", "yellow", "red"};
std::string match = "";
for(auto &str : vectStr)
{
    auto pos = theString.find(str);
    if(pos != std::string::npos)
    {
         match = theString.substr(pos, str.length());
    }
}

然后,您可以进行基本检查,如果循环之后字符串仍然为空,这将意味着 - 无匹配。这将为您带来字符串中的最后一场比赛。如果需要该行为,您可以在if语句中提早返回以获得第一匹匹配。

如果您最初无法创建向量(参数是整个字符串),则可以拆分字符串并创建向量(如果有分隔符,例如,whitespace)。由于我不知道标准的string::split,您可以使用boost或自己实施。那里有很多例子。