我的程序有两个存储数组和一个未分配的字符串:
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
和 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 语句中提前返回以获得第一个匹配项。
如果您最初无法创建 vector (参数作为一个完整的字符串出现),您可以拆分字符串并创建 vector (如果有分隔符 - 例如,空格)。
由于我不知道标准的 string::split
,您可以使用 boost
或自己实现。那里有很多例子。
关于c++ - 将数组匹配分配给字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46125737/