题目描述

连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

方法1:

每次读取s前8个字符,然后其余部分重新复制给s,当小于等于8时结束(设标志flag=true)。

int main(){
    string s;
    while(cin>>s)
    {
        bool flag=false;//标志是否结束
        while(!flag)
        {
            int len=s.length();
            if(len<8){
                cout<<s.append(8-len,'0')<<endl;//追加 str.append(个数,字符)
                flag=true;}
            else if(len==8){
                cout<<s<<endl;
                flag=true;}
            else{
                cout<<s.substr(0,8)<<endl;//截取 str.substr(开始,个数)
                s=s.substr(8);}
        }
    }
    return 0;
}

方法2:

大于8时截断+重新赋值,直到不满足时说明<=8,resize解决。

while(cin>>s)
    {
        while(s.length()>8)
        {
            cout<<s.substr(0,8)<<endl;
            s=s.substr(8);
        }
        s.resize(8,'0');//str.resize(长度,不满足时的填充字符)
        cout<<s<<endl;
    }

resize() 调整字符串的大小。如果字符串长度变小,多余的字符会被截掉。若长度变大,可以设置填充的字符。