字符串分隔

一、題目描述

連續輸入字符串,請按長度爲8拆分每一個字符串後輸出到新的字符串數組;
ios

長度不是8整數倍的字符串請在後面補數字0,空字符串不處理。數組

輸入描述:
函數

連續輸入字符串(輸入2次,每一個字符串長度小於100)spa

輸出描述:
指針

輸出到長度爲8的新字符串數組code

輸入例子:
對象

abc
123456789

輸出例子:ci

abc00000
12345678
90000000

二、程序

方案一

基本思路:字符串

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s;
    while(cin>>s){
        int count = 0;
        int i=0;
        while(i<s.length()){
            if(count<8){
            //一開始執行這一句,由於咱們的初值設置爲count=0
                cout<<s[i];
                i++;
                count++;
                //直到輸出8個數字爲止
            }
            else
            {
                cout<<endl;
                count = 0;
                //若是滿8位則換行,而後從新置count爲0,再執行上面的輸出
            }
        }
        while(count<8){
            cout<<0;
            count++;
        }
        //最後一排的輸出控制,若是不滿8位補零輸出
        cout<<endl;
    }
}


#include<iostream>
#include<string>
using namespace std;

void print(const char *p);
char str[9]={0};
 
int main(){   
    string str1,str2;
    const char *p1,*p2;
    
    getline(cin,str1);
    getline(cin,str2);
    p1 = str1.c_str();
    p2 = str2.c_str();
    /*
    const char *c_str();
    c_str()函數返回一個指向正規C字符串的指針, 內容與本string串相同. 
    這是爲了與c語言兼容,在c語言中沒有string類型,故必須經過string類對象的成員函數c_str()把string 對象轉換成c中的字符串樣式。
    注意:必定要使用strcpy()函數 等來操做方法c_str()返回的指針
    */
    print(p1);
    print(p2);
  
    return 0;
}
void print(const char *p){
    while(*p !='\0'){
   	//循環到字符串結束 
    int k=0;
    while((k++) < 8){
    //控制輸出8位     
        str[k] = *p;
        if(*p == '\0'){
            str[k] = '0';
            continue;
        }
        p++;
    }   
    str[k] = '\0';
    for(int i=0;i<8;i++)
       cout << str[i];
    cout<<endl;   
    }
}

方案二

基本思路:調用庫函數substr()截取字符串。get

#include <stdio.h>
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s1;
    string s2 = "0000000";
    unsigned int i = 0;
    while ( getline(cin, s1) )
    {          
        for (i = 0; i+8 < s1.length(); i=i+8)
        {              
            cout << s1.substr(i, 8) << endl;
        }
 
        if (s1.length() - i > 0)
        {
            cout << s1.substr(i, s1.length() - i) +  s2.substr(0, 8-(s1.length() - i))<< endl;
        }      
    }  
    return 0;
}
//getline遇到換行符,結束輸入,進入while循環,利用string的substr函數取出字符串。

#include<iostream>
#include<string>
using namespace std;
void output(string str);
int main(){
    string str1; string str2;
    cin>>str1>>str2;
    output(str1);
    output(str2);    
    return 0;
}
void output(string str){
    int cir=str.size()/8;
    int last=str.size()%8;
    string fil="00000000";
    for(int i=0;i<cir;i=i+1)
        cout<<str.substr(i*8,8)<<endl;
    if(last>0) cout<<str.substr(8*cir)<<fil.substr(last)<<endl;
}
相關文章
相關標籤/搜索