• 字符串排序 墨迹了半天的自闭题目


    如果一道字符串的题不能让我自闭的话,那就两道

    先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串少于一百个字符。如果在输入过程中输入的一个字符串为“stop”,也结束输入。
    然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。


    Input 字符串的个数,以及该组字符串。每个字符串以‘ ’结束。如果输入字符串为“stop”,也结束输入. Output 将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。

    Sample Input
    5
    sky is grey
    cold
    very cold
    stop
    3
    it is good enough to be proud of
    good
    it is quite good
    Sample Output
    cold
    very cold
    sky is grey
    good
    it is quite good
    it is good enough to be proud of
    
    Hint 根据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。
    测试数据有多组,注意使用while()循环输入。
     
     
     
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string>
    #include<vector>
    using namespace std;
    const int maxn=2000;
    int n,cnt;
    
    bool cmp(string b,string c)
    {
        return b.size()<c.size(); 
    }
    
    int main()
    {
        while(cin>>n)
        {
            cin.ignore();// EOF
            vector<string> jack;
            jack.reserve(n);
            string a;
            for(int i=1;i<=n;i++)
            {
                getline(cin,a);//读入一整行 
                if(a=="stop")//string数组每一个都是一坨字符串 
                {
                    break;
                }
                jack.push_back(a);//STL教学式使用 
            }
            sort(jack.begin(),jack.end(),cmp);
            
            for(int i=0;i<jack.size();i++)
            {
                cout<<jack[i];
                if(i!=jack.size()) cout<<endl;
            }
            
        }
        return 0;
    }

    cin.ignore()函数是C++标准输入流(cin)中的一个方法。cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它继续等待。

    它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。例如可以这么用,cin.ignore(1024, ' '),通常把第一个参数设置得足够大,这样实际上是为了只有第二个参数 ' ' 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲流中清除出去。

    如果默认不给参数的话,默认参数为cin.ignore(1, EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束。
    ---------------------
    作者:micro小宝
    来源:CSDN
    原文:https://blog.csdn.net/wxbmelisky/article/details/48596881
    版权声明:本文为博主原创文章,转载请附上博文链接!

    string中有两个函数:reserve()和resize(),最近细细的看了下这两个函数的使用,记录下来。

        reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于等于函数的参数,影响capacity。

        resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。若尺寸变大,不够的数据用该函数第二个参数填充,影响size。

     

    需要连续从标准输入读取数据时,可以采用下面两种不同的方式判断文件结束

    int i;
    while(scanf("%d",&i) != EOF){do whatever...}
    while(cin >> i){do whatever...}


    首先看scanf,当成功读取时返回读取的项的数目,如:scanf("%d %d",&i,&j)返回2,scanf("%d %f %s",&i, &f, c)返回3。这个数目可以是你希望读取的项数,也可能小于希望读取的项数,在匹配失败时返回0(如:用scanf("%d",&i)接收整数而输入是英文字母时就返回0)。需要注意的是用while(scanf("%d",&i) != EOF)时,接收到像876652098643267843超过int型取值范围的数时循环也会继续执行;相同的情况出现在while(cin >> i)上时循环会立即结束。
    ---------------------
    作者:candj
    来源:CSDN
    原文:https://blog.csdn.net/candj/article/details/4419585
    版权声明:本文为博主原创文章,转载请附上博文链接!

     

  • 相关阅读:
    TypeScript系列
    常用软件工具
    How to change Eclipse loading image
    【奥斯卡理财星体系 第五章】丨手把手教你从零开始搭建资产配置
    【奥斯卡理财星体系 第四章】丨你该如何选择适合的理财工具
    【奥斯卡理财星体系 第三章】丨你适合追求什么样的收益率
    ASP.NET Core使用Elasticsearch记录API请求响应日志实战演练
    C# Quartz.NET实现动态改变作业调度周期
    openssl 生成pfx
    netcore进程内(InProcess)托管和进程外(out-of-Process)托管
  • 原文地址:https://www.cnblogs.com/WHFF521/p/11219053.html
Copyright © 2020-2023  润新知