繁体   English   中英

如何在C ++中的另一个数组中查找char数组?

[英]How to find a char array in another one in c++?

我想编写一个代码在另一个数组中查找一个char数组,并打印出第一个数组的第一个出现的place(element)。 我编写了自己的代码,它可以工作。 但是它“似乎”有点凌乱。 有谁有更好的主意来重写此代码?

“仅允许strlen()。我需要通过设计循环来编写它。”

这是代码

#include <iostream>
#include <string.h>

using namespace std;

const int len = 100;

int main() {
    int i, j, k, l;
    char a[len]="leonardo" , b[len]="nar";
    bool es1 = false, es2=false;

    i = 0;
    while(i < len && !es1)
    {
        j = 0;

        if(a[i] == b[j])
        {
            k = i+1;
            l = j;
            while (k < i+strlen(b) && !es2)
            {
                j = j+1;
                if (a[k] == b[j]) k = k+1;
                else es2 = true;
            }
            if (a[i+strlen(b)-1]==b[l+2] && !es2) es1 = true;
            else i = i+1;
        }
        else i= i+1;
    }

    cout << endl << "element: " << i;
    return 0;
}

顺便说一句,这不是真正的作业。 我只是准备参加编程考试。 我只是发现,如果数组b []少于3个元素,则代码将无法正常工作。 因此,似乎代码需要进行重大审查!

最简单的方法是使用std::search

auto it = std::search(a, a + 8, b, b + 3));

在这里, it指向发现序列的开始a ,或者到std::end(a)如果没有找到。

这看起来像子字符串搜索算法。 您可以使用任何公认的算法,例如KMP

可以使用字符串代替char数组吗? 如果是这样,您可以使用string :: find。

http://www.cplusplus.com/reference/string/string/find/

bool bFound = strA.find(strB)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM