0

次のコードがあります。

int main()
{
    string  adr="bonjour000000";
    int j=adr.length();
    cout<<adr<<"\nLa longueur de ma chaine est "<<j<<".";
    cout<<"\n";

    if(adr.length()>=7){
        //if(how to test if the characters after the 7th character are =0)
        //here begin the 2nd if loop

        for(unsigned int i=0; i<adr.length(); i++)
        {
            cout<<adr[i];
        }

        adr.erase (adr.begin()+7,adr.end());
        cout<<"\n"<<adr;

        //here ends the 2nd if loop
    }

    else{
        cout<<"Error: there is less than 7 characters";
        cout<<"\n"<<adr;
    }
}

最初にadrが 7 文字またはそれ以上の文字を持っているかどうかをテストしたい、次に 7 文字目以降のすべての文字がすべて = 0 であるかどうかを確認したい。この場合、これらすべての 0 をカットしたい。いいえ、 adrをそのままにしておいてください。私の例では、次の出力が期待されていました。

bonjour000000
La longueur de ma chaine est 13
bonjour000000
bonjour

ご協力いただきありがとうございます。

4

2 に答える 2

3

std::string::find_first_not_of「0」ではない最初の文字を確認するために使用できます。文字列境界内にそのような文字がない場合、すべての文字は 0 になります。これは、文字 #7 の後に始まる部分文字列で呼び出します。@Luchian Grigoreが示したように、開始位置で呼び出すことができます

于 2012-12-10T10:41:16.737 に答える
3

以下:

bool condition = (adr.length() > 7) &&
                 (adr.find_first_not_of('0', 7) == std::string::npos);
于 2012-12-10T10:43:47.470 に答える