题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
示例1
输入
abc 123456789
输出
abc00000 12345678 90000000
思路一:计算出总共划分多少行,然后将字符串赋值,最后输出
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
void process(vector<string>& result, string line)
{
int num = ceil((double)line.size() / 8.0); //上取整
int count = 0;
for (int i = 0; i < num; i++)
{
string temp(8, '0');
for (int j = 0; j < 8; j++)
{
if (count >= line.size())
break;
temp[j] = line[count];
count++;
}
result.push_back(temp);
}
}
int main()
{
string input1, input2;
getline(cin, input1);
getline(cin, input2);
vector<string> result;
process(result, input1);
process(result, input2);
for (auto s : result)
cout << s << endl;
return 0;
}
思路二:利用标准库函数substr() 和 append()函数 简洁美观
速度要比上面的慢1ms
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
while(getline(cin,str)){
while(str.size()>8){
cout << str.substr(0,8) <<endl;
str=str.substr(8);
}
cout << str.append(8-str.size(),'0') << endl; //不够8位的补0
}
}