为什么我的test方法中while

为什么我的test方法中while循环不了,编译是没有错误的,但是while条件不能通过

```c++
#include<iostream>
using namespace std;
#include<string>
int i=-1;
int test(string res,string m,int count){//string m[]
    
    int q=0;
    while(i<res.length()){
        for(int y=0;y<m.length();y++){            
            if(res.find(m[y])!=NULL){
                i++;
                q++;
            }else{
            i++;
            y=-1;
            q++;
            }
        }
        
        res.erase(0,q);
        i++;
        count++;
        test(res,m,count);
    }
    cout<<i<<endl;
    return count;
} 


int main(){
string res;
    string m;
    cin>>res;
    cin>>m;
    int num=test(res,m,0);
    cout<<num<<endl;
    return 0;
    
}

```

int 和 size_t 比较,当int为负数,会转换为最大的size_t, size_t(-1)是一个天文数字,条件永远为false

没道理啊,你输出一下res.length()的值看看是多少