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个字符,然后我想检查第7个字符之后的所有字符是否都是= 0。如果是这种情况,我想把这些0都剪掉,当不,保持原样。在我的例子中,我期望这个输出:

bonjour000000
La longueur de ma chaine est 13
bonjour000000
bonjour

谢谢你的帮助。

4

2 回答 2

3

您可以使用它std::string::find_first_not_of来检查不是“0”的第一个字符。如果在字符串范围内没有这样的字符,则所有字符都是 0。您将在 char #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 回答