题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
示例1 输入 复制
abc 123456789
输出 复制
abc00000 12345678 90000000
思路:
通过while(cin>>string)开始循环,当长度len=str.size()大于等于8时,通过遍历输出前8位并每次进行len–,记录循环次数count,再输出8位直至len小于8,当len小于8时,计算需要添加0的位数request,通过遍历0至request-1来添加‘0’。
#注意元素的索引,应该为str[i+8count],因为每次遍历都是0-7索引,对应的str中应该对应循环遍数8后的索引。
代码:
#include <iostream>
#include <set>
#include <string>
using namespace std;
void stringSplitting()
{
string str;
while (cin >> str)
{
int len = str.size();
int count = 0;
while (len >= 8)
{
for (int i = 0; i < 8; i++)
{
cout << str[i+8*count];
len--;
}
count++;
cout << endl;
}
int request = 8 - len;
while (len < 8 && request >0 &&request<8)
{
for (int i = 0; i < len; i++)
{
cout << str[i+8*count];
}
for (int j = 0; j < 8 - len; j++)
{
cout << '0';
request--;
}
cout << endl;
}
}
}
int main()
{
stringSplitting();
system("pause");
return 0;
}
另一种解法
根据str[index]去输出,每次输出时索引index++,以长度len为判断条件,每次输出以后len–。
对于不足8位的,令bit_count=8,以bit_count>0为判断条件,对每次输入都进行bit_count–。
代码:
void stringSplitting2()
{
string str;
while (cin >> str)
{
int len = str.size();
int index = 0;
while (len > 0)
{
if (len >= 8)
{
for (int i = 0; i < 8; i++)
{
cout << str[index];
len--;
index++;
}
cout << endl;
}
else
{
int bit_count = 8;
while (len > 0)
{
cout << str[index];
index++;
len--;
bit_count--;
}
while (bit_count > 0)
{
cout << 0;
bit_count--;
}
cout << endl;
}
}
}
}