描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:
abc
复制输出:
abc00000
题解:输入的字符串格式是一个整体,类似与absddwdwafa,中间没有空格分隔,如“asdsd dsd d s”,处理起来会简单许多。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
#include <string.h>
#include <malloc.h>
#include <sstream>
#include <algorithm>
#include <cstring>
#include <vector>
/**
* @brief •输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:
abc
输出:
abc00000
*/
void print(int arr[], int n)
{
for (int i = 0; i < n; ++i)
{
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
void appointLengthSubstr(std::string temp)
{
std::vector<std::string> strVector;
while (strlen(temp.c_str()) > 0)
{
// std::string subStr = temp.substr(0, 8); //subStr是分割后的字符
int len = strlen(temp.c_str());
//3.组装最终的字符串
if (len == 8)
{
strVector.push_back(temp);
}
else if (len > 8)
{
std::string lltemp = temp.substr(0, 8);
strVector.push_back(lltemp);
}
else
{
switch (len)
{
case 1:
temp += "0000000";
break;
case 2:
temp += "000000";
break;
case 3:
temp += "00000";
break;
case 4:
temp += "0000";
break;
case 5:
temp += "000";
break;
case 6:
temp += "00";
break;
case 7:
temp += "0";
break;
default:
break;
}
strVector.push_back(temp);
}
temp = temp.substr(8, len);
}
std::vector<std::string>::iterator iter = strVector.begin();
while (iter != strVector.end())
{
std::cout << *iter++ << std::endl;;
}
}
//0123456789
int main()
{
std::string str;
getline(std::cin, str);
appointLengthSubstr(str);
// fun(str);
return 0;
}