考察C++ string.compare 函数用法

    int m=A.compare (B); //完整的A和B的比较
    int n=A.compare(1,5,B,4,2); //"Bcdef"和"AbcdEf"比较
    int p=A.compare(1,5,B,4,2); //"Bcdef"和"Ef"比较
    int q=C.compare(0,3,D,0,3); //"123"和"123"比较

如果相比较的两个子串相同,compare() 函数返回 0,否则返回非零值。

上代码

#include<cstring>
using namespace std;
int main(void){
    int num;
    int n,i;
    int pos;
    int ere;/*自守数个数*/
    string str1,str2;
    while(cin>>num){
        ere=0;
        for(i=0;i<=num;i++){
            n=i*i;
            str1=to_string(n);
            str2=to_string(i);
            pos=str1.size()-str2.size();
         
           if(! str1.compare(pos,str1.size(),str2,0,str2.size()) ){
               ere++;
           }
                
        }
        cout<<ere<<endl;
    }
}