•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

发布时间 2024-01-10 20:50:33作者: 首心

描述
•输入一个字符串,请按长度为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; 

}