我的程序有两个存储的数组和一个未分配的字符串:
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;
答案 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
或自行实施。那里有很多例子。