填充游戏

Description

在字符串前填充一些东西到一定的长度。例如用“*”去填充字符串“GPLT”,使之长度为10,结果就应该是“******GPLT”。

Input

多组测试数据,第一行给出一个正整数N(<=104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。

Output

输出结果字符串。

Sample Input

6 2 33333 6 * 33333 4 * this is a sample for cut

Sample Output

233333 *33333 cut

HINT

注意一下输入的字符串是以回车为结束标志的,也就是说可能有空格,要小心。

 

 

很基础的一道算法题

是最开始因为没有考虑到getline时 输入流中有/n 导致getline到一行空行 程序无法ac

此外 还要考虑 要求的长度 比输入字符串短的情况 即只输出前n个字符

 

实际上你在每次输入数据的时候会输入一个回车 ‘\n'

cin在读入整数时候会忽略空白碰到非数字('\n')时停止 

cin在getline时会把'\n'及之前的内容读回来,哪怕是空行也会读入

cin在读入字符时会把缓冲区内当前字符读入(不会忽略空白)

cin.ignore(1000, '\n')的含义是把缓冲区内从当前字符开始知道'\n'之前字符(如果有1000个的话)忽略掉,实际上你这里假设一行不会超过1000个字符,所以含义是忽略一行

 

例如

 

如果你想输入a=1,b=2 name="xxxx", c='y'
所以你的输入是
1回车2回车xxxx回车y回车
cin读入a=1 碰到回车停止 此时1后面的回车还在缓冲区里
cin读b=2时忽略2前面的回车但是停止在2后面的回车
此时你如果掉getline 就会读入一个2后面回车前面的也就是空行 因此此时应当调用一个cin.ignore(1000,'\n')把这个\n忽略掉

 

 

代码中注释部分为错误代码

 

#include<iostream>
//#include <stdio.h>
#include<climits>
using namespace std;
int main()
{
    int len;
    char ch;
    while(cin>>len>>ch)
    {
        
        cin.ignore();
        string str;
        getline(cin,str);
        if(len==str.length())
            cout<<str<<endl;
        else if(len>str.length())
        {
            while(len>str.length())
            {
                str=ch+str;
            }
            cout<<str<<endl;
        }
        else
        {
            for(int i=str.length()-len;i<str.length() ;i++)
                cout<<str[i];
            cout<<endl;
        }
        
    }
    return 0;
}

/*#include<iostream>
using namespace std;
int main()
{
    int n;
    char c;
    char s[100];
    while(cin>>n>>c)
    {
        cin.ignore();
        cin.getline(s,100);
        //cout<<s<<endl;
        int len=strlen(s);
        if(n>len)
        {
            for(int i=1;i<=n-len;i++)
                cout<<c;
            cout<<s<<endl;
        }
        else if(n==len)
        {
            cout<<s<<endl;
        }
        else
        {
            cout<<"cut"<<endl;
        }
    }
    return 0;
}

 

posted @ 2016-10-30 21:02  CBHHH  阅读(529)  评论(0编辑  收藏  举报