C++ 将数组匹配分配给字符串

C++ 将数组匹配分配给字符串,c++,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)) st

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

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());
    }
}
std::string theString=“红蓝绿白”;
向量vectStr={“白色”、“紫色”、“黄色”、“红色”};
std::string match=“”;
用于(自动&str:vectStr)
{
自动位置=字符串查找(str);
if(pos!=std::string::npos)
{
match=string.substr(位置,str.length());
}
}
然后,您可以执行一项基本检查,检查循环后字符串是否仍然为空,这意味着-不匹配。 这将获得字符串中的最后一个匹配项。如果需要这种行为,可以在if语句中提前返回以获得第一个匹配项

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

您可以使用
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());
    }
}
std::string theString=“红蓝绿白”;
向量vectStr={“白色”、“紫色”、“黄色”、“红色”};
std::string match=“”;
用于(自动&str:vectStr)
{
自动位置=字符串查找(str);
if(pos!=std::string::npos)
{
match=string.substr(位置,str.length());
}
}
然后,您可以执行一项基本检查,检查循环后字符串是否仍然为空,这意味着-不匹配。 这将获得字符串中的最后一个匹配项。如果需要这种行为,可以在if语句中提前返回以获得第一个匹配项

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

什么是匹配?
find
返回匹配的位置,您应该能够使用它。但我认为您不理解
find
的功能,因为它不会检测到这些字符串之间的任何匹配。请提供一个示例,并提供所需的输出。无论如何,这听起来像是XY问题。将字符串拆分为字符串向量,并使用空格作为分隔符,然后使用查找两个向量中都存在的字符串。从结果向量构造str如果
array1
array2
有多个字符串匹配,你会怎么做?什么是匹配?
find
返回匹配的位置,你应该能够使用它。但我认为您不理解
find
的功能,因为它不会检测到这些字符串之间的任何匹配。请提供一个示例,并提供所需的输出。无论如何,这听起来像是XY问题。将字符串拆分为字符串向量,并使用空格作为分隔符,然后使用查找两个向量中都存在的字符串。从结果向量构造str如果
array1
array2
有多个字符串匹配,你会怎么做?我认为他没有可用的字符串向量,他只有一个字符串(希望用空格分隔)。在这种情况下,您可以添加拆分字符串w.r.t空间,将其添加到答案中的向量中?我想他没有可用的字符串向量,他只有一个字符串(希望用空格分隔)。在这种情况下,您可以添加拆分字符串w.r.t空间,将其添加到答案中的向量中?看起来更完整。