Собственная реализация функции strstr на C++

Одной из задач при обучении программирования является задача по реализации на C++ собственной функции поиска подстроки в строке. Данной задачей в стандартной библиотеке занимается функция strstr. Ниже же мы покажем свою реализацию:

int strstr(const char *text, const char *pattern)
{
    //  Если шаблон подстроки пустой, то возвращаем 0
    if (! *pattern)
        return 0;

    // Необходимые переменные.
    int pos = -1;
    const char *a, * b;

    b = pattern;

    // перебираем строку посимвольно. Как мы помним C-строка - это массив символов. Поэтому нам удобнее работать через указатели.
    for (; *text != 0; text++){
        // увеличиваем значение позиции на 1.
        pos++;

        // В случае, если исмволы не идентичны, остальной код пропускаем.
        if (*text != *b) {
            continue;
        }

        // Если че у нас символ в текущей позиции строки равен первому символу шаблона, то запускаем бесконечный цикл.
        // Он прерывается в случае несовпадения символов.

        // "а" присваиваем "text" с ее текущей позиции. Тогда позиция text в цикле не меняется, а меняется позиция в "a".
        a = text;

        while(1) {

            // Если b достиг конца шаблона, то мы нашли полное совпадение и можем вернуть позицию pos
            if (*b == 0){
                return pos;
            }

            // Если же следующие символы не равны, то прерываем функцию
            if (*a++ != *b++) {
                break;
            }
        }

        // Позицию в b снова сбрасываем на начало.
        b = pattern;
    }

    return -1;
}