华为机考题 004字符串分割

题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。


输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)



输出描述:

输出到长度为8的新字符串数组


输入例子:
abc
123456789

输出例子:
abc00000
12345678
90000000
#include<iostream>
#include<string>  //注意:是string,不是string.h
using namespace std;
 
int main()
{
    string str1,str2;
    getline(cin,str1);
    getline(cin,str2);  
 
    int len1=str1.length();//获取字符串长度
    if(0!=len1%8)//第一种情况:字符串的长度不是8的整数倍,需要先补0,再分割
    {
        str1.resize(len1+8-len1%8,'0');//将不足的部分加上0,resize函数原型void resize(int len,char c),把当前字符串的大小置为n,并用字符c填充不足的部分
        for (int i=0;i<str1.length()/8;i++)
        {
            cout<<str1.substr(i*8,8)<<endl;//substr的函数原型string substr(int pos,int n)const;返回从pos开始的n个字符组成的子串。
        }
    }
    else if (0==len1)//第二种情况:字符串为空,不做处理,直接输出
    {
        cout<<str1;
    }
    else<span style="white-space:pre">	</span>//第三种情况:字符串的长度为8的整数倍,分割之后输出
    {
        for (int i=0;i<str1.length()/8;i++)
        {
            cout<<str1.substr(i*8,8)<<endl;
        }
    }
         
 
    int len2=str2.length();
    if(0!=len2%8)
    {
        str2.resize(len2+8-len2%8,'0');
        for (int i=0;i<str2.length()/8;i++)
        {
            cout<<str2.substr(i*8,8)<<endl;
        }
    }
    else if(0==len2)
    {
        cout<<str2;  
    }
    else
    {
        for (int i=0;i<str2.length()/8;i++)
        {
            cout<<str2.substr(i*8,8)<<endl;
        }
    }
     
    return 0;
}


这个程序让我熟悉了string类的使用。

参考博客:

http://blog.csdn.net/yzl_rex/article/details/7839379

这篇博客详细介绍了string类的常用函数,并且附带程序。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值