将数组匹配分配给字符串

时间:2017-09-08 23:30:29

标签: c++

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

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;

1 个答案:

答案 0 :(得分:0)

您可以使用string::substr和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语句中进行早期返回以获得第一个匹配。

如果最初无法创建向量(参数作为整个字符串),则可以拆分字符串并创建向量(如果有分隔符 - 例如,空格)。 由于我不了解标准string::split,您可以使用boost或自行实施。那里有很多例子。