华为机试-字符串分隔(较难)
字符串分隔
http://www.nowcoder.com/questionTerminal/d9162298cb5a437aad722fccccaae8a7
题目描述
连续输入字符串,请按长度为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() 调整字符串的大小。如果字符串长度变小,多余的字符会被截掉。若长度变大,可以设置填充的字符。