strlen编译出错

问题遇到的现象和发生背景

10:大整数加法
总时间限制: 1000ms 内存限制: 65536kB
描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
来源
程序设计实习2007

问题相关代码,请勿粘贴截图
#include

using namespace std;

int main()
{
 string az,bz;
    cin>>az>>bz;
    int a[(int)strlen(az)],b[(int)strlen(bz)];
    for(int i=0;i<strlen(az);i++)
    {
        a[i]=az[i]-'0';
    }
    for(int i=0;i<strlen(bz);i++)
    {
        b[i]=bz[i]-'0';
    }
    g=strlen(az)>=strlen(bz)?strlen(az):strlen(bz)
    int h[g+1]={0};
 for(int i=0;i<=g;i++)
 {
     if(a[i]+b[i]>=10)
     {
         h[i+1]+=1;
         h[i]+=(a[i]+b[i])%10;
        }
        else
        {
            h[i]=a[i]+b[i];
        }
    }
    bool l=false;
 for(int i=200;i>=0;i--)
 {
     if(h[i]!=0)
         l=true;
     if(l==true)
         cout<return 0;
}

运行结果及报错内容

[Error] cannot convert 'std::string' {aka 'std::__cxx11::basic_string'} to 'const char*'

用string类了,就不要用strlen了啊。string有计算长度的函数啊

你头文件少了一个,
strlen()适用于字符
s.size()或则 s.length()才适用于字符串