C++ 检查字符串是否包含特定的顺序字符

C++ 检查字符串是否包含特定的顺序字符,c++,C++,我尝试使用以下代码来检查字符串是否包含特定字符,但我想检查这些字符是否按照代码的顺序排列 string string1= "Amed"; string string2= "Anbhsmegfd"; std::string x(string1); if (x.find_first_not_of(string2) != std::string::npos) { std::cerr << "Error\n"; } 在string2中找到的string1 但是我需要输出将是err

我尝试使用以下代码来检查字符串是否包含特定字符,但我想检查这些字符是否按照代码的顺序排列

string string1= "Amed";
string string2= "Anbhsmegfd";
std::string  x(string1);
if (x.find_first_not_of(string2) != std::string::npos)
{
    std::cerr << "Error\n";
}
在string2中找到的string1
但是我需要输出将是
error
,因为
e
出现在
m

我怎样才能做到这一点呢?

只需编写代码。这是psuedo代码,我将它留给您转换为c++

char* s = str2
foreach (char c in str1)
    char *find = indexof(s, c)
    if(!find)
       error;
    s = find

ie-查找第一个字符-如果找到,请将指针移动到找到该字符的位置并搜索下一个字符,否则失败

是否需要此功能

string s1 = "Amed";
string s2 = "Aehkm";
size_t k = 0;
for (size_t i = 0; i < s2.size(); ++i)
    if (s1[k] == s2[i]) {
        k++;
        if (k == s1.size()) {
            cout << "found" << endl;
            break;
        }
    }
string s1=“Amed”;
字符串s2=“Aehkm”;
尺寸k=0;
对于(size_t i=0;icout Dynamic programming可以工作。或者在较小的字符串上逐字符递归回溯。实际上,string1不在后者的string2中。仅解决某些情况,如果string1=“Ahmed”和string2=“ehAmAhmsed”未找到,但string2按顺序包含string1!@AhmedElzeiny我刚刚尝试过,它说“找到”。(您可以每次以
k
增量打印
i
,以查看发生了什么。)
string s1 = "Amed";
string s2 = "Aehkm";
size_t k = 0;
for (size_t i = 0; i < s2.size(); ++i)
    if (s1[k] == s2[i]) {
        k++;
        if (k == s1.size()) {
            cout << "found" << endl;
            break;
        }
    }