描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
点击查看代码
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
string s1;
int i;
int j = 0, k1,k2;
char k[9] = {'0','0','0','0','0','0','0','0','\0'};//需要注意定义的字符数组尾项要用'\0'来表示结束,原因是字符串的结束标志是他,不加'\0'会出现乱码;同时应该注意定义的数组下标应该加1
getline(cin, s1);
for (i = 0; i < s1.length(); i++)//去除字符串中的空格
{
if (s1[i] == ' ')
s1.replace(i, 1, "");//当判断字符为空格时,用空字符""代替,并将字符串长度减1
}
j = s1.length();//计算减去所有空格的字符串长度
while (j % 8 != 0)//如果字符串长度不为8的倍数,则需要用0补,一直补到该判断句结果为False
{
s1.append("0");
j += 1;
}
k1 = j / 8;//计算补足字符后,字符串的长度应为8的倍数,计算其商,即能得到该将字符串切割成8个字符为一个字符串的个数
for (k2 = 0; k2 < k1; k2++)//输出切割后的每一个字符串
{
for (i = 0; i < 8; i++)
{
k[i] = s1[8*k2+i];
}
cout << k << endl;
}
return 0;
}