题目描述:
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
输入例子:
abc
123456789
输出例子:
abc00000
12345678
90000000
由题目和输入输出的例子,可以分为两种情况:输入个数原本就小于8,直接补0;输入个数大于8,那8的倍数部分依次输出,余下的补0输出。
#include <iostream>
#include <string>
using namespace std;
void coutstr(string& s)
{
int n = s.size();
//第一种情况
if (n <= 8){
string tmps(8 - n, '0');
s = s + tmps;
cout << s << endl;
}
//第二种情况
if (n > 8){
int d = n/ 8;
int re = n % 8;
for (int i = 0; i < d; i++){
for (int j = 0; j < 8; j++){
cout << s[i * 8 + j];
}
cout << endl;
}
if (re != 0){
for (int i = 0; i < re; i++){
cout << s[8 * d + i];
}
int c = 8 - re;
for (int i = 0; i < c; i++){
cout << '0';
}
cout << endl;
}
}
}
int main(){
string s1;
string s2;
while (cin >> s1 >> s2 ){
coutstr(s1);
coutstr(s2);
}
return 0;
}
还是多用函数本身的实现比较好啊,下边是别人写的一段代码,我直接贴图上来
趁此机会,总结下string的用法:
方法 | 描述 |
---|---|
string s(cp, n) | 这里的cp指向一个数组,把这个数组的前n个字符拷贝到s(拷贝数组时,必须指定n,否则会未定义错误) |
string s(s2, pos2) | 从另一个字符串s2的下标开始拷贝 |
string s(s2, pos2, len2) | 从s2的pos2拷贝len2个字符 |
s.substr(pos, n) | 返回s中从pos开始的n个字符,这里的n可以不写,默认是剩下的所有字符 |
s.insert(pos, args) | 从s的pos处开始插入args指定的字符,args可以是数组,也可以是规定数量的字符(5,’!’)等 |
s.erase(pos, len) | 删除从pos开始的len个字符 |
s.assign(args) | 将s中的字符替换为args指定的字符,并返回一个指向s的引用 |
s.append(args) | 将args追加到s上,返回一个指向s的引用 |
s.replace(range,args) | 删除s中range范围内的字符,替换为args指定的字符 |
string的搜索操做 | |
s.find(args) | 查找s中args第一次出现的位置 |
s.rfind(args) | 最后一次出现的位置 |
s.find_first_of(args) | 在s中查找args中任意字符第一次出现的位置 |
s.find_last_of(args) | 在s中查找args中任意字符最后一次出现的位置 |
s.find_first_not_of(args) | 在s中查找第一个不在args中的字符 |
s.find_last_not_of(args) | 在s中查找最后一个不在args中的字符 |