• 填充游戏


    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个字符

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

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

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

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

    cin.ignore(1000, ' ')的含义是把缓冲区内从当前字符开始知道' '之前字符(如果有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,' ')把这个 忽略掉

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

    #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;
    }
  • 相关阅读:
    集合的一些操作总结
    字符串的操作
    python字典的操作总结
    python中的列表知识总结
    Python利用文件操作实现用户名的存储登入操作
    如何理解:城市的“信息化→智能化→智慧化”
    程序员必备技能-怎样快速接手一个项目
    程序员的职业规划
    只要 8 个步骤,学会这个 Docker 命令终极教程!
    使用GitLab实现CI/CD
  • 原文地址:https://www.cnblogs.com/cbhhh/p/6014031.html
Copyright © 2020-2023  润新知