zoukankan      html  css  js  c++  java
  • 关于函数getline()(简单注意事项,不懂你怼我!!!)

    关于getline()函数好使但是有毒;

    有两种操作需要进行特殊处理:

    First:

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include
    <algorithm> #include <sstream> using namespace std; int n; int a[100]; int b[100],c[100]; int main() { while (cin>>n) { string s; //测试样例请用:
    // 10
    // 1 2 3 4 5
    //6 7 8 9
    string ss; string sss; getline(cin,s); //自己想想这一个存的啥;
    getline(cin,ss); //这个呢 getline(cin,sss); //还有这个。。 cout
    <<s<<endl<<ss<<endl<<sss<<endl; } return 0; }

    输出结果你蒙(应该是蒙吧,难道你知道?神犇!?)对了么??

    cin>>n;进行完毕之后有一个 ;但是 并不能存到n中,于是留在了缓冲区;

    而当s进行读入一行操作时,实际上存入的是 。

    那么你在 ss中读入1 2 3 4 5 之后的换行为什么不需要另开一个string类型存储,反而6 7 8 9可以直接存到sss中去呢??想一下;

    因为是读入一行操作, 会被存入那一行中,而不是像n一样不能存储。所以不需要重开一个,你蒙对了么(馬鹿?)

    还有另一种输入引发的另一个问题,(注意读取无用行的位置不同)

    Second:

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <sstream>
    using namespace std;
    int n;
    int a[100];
    int b[100],c[100];
    int main()
    {
        string s;
        string ss;
        string buf;
        while (getline(cin,s))
        {
            int a;                //如果你还是在这里插入getline(cin,buf)而不是最后;那么第一次循环buf会取代ss读入,ss就会读下一行而不是应该读取的这一行;第二次循环时s读入不了;
            getline(cin,ss);
            cin>>a;             //这里会遗留
    ;
            getline(cin,buf);
        }
        return 0;
    }

    PS:

    这个问题为什么提出,解决什么问题呢??

    题目中若要求在一组样例中读入多行则需要注意你读入的究竟是什么东西。

  • 相关阅读:
    以太坊编程简单介绍 ,Part-1
    以太坊可更新智能合约研究与开发综述
    为你的以太坊应用程序设计架构
    货币的未来取决于打破关于货币历史的虚构谎言
    JVM调优:GC 参数
    JVM调优:GC 参数
    Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法
    Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法
    Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法
    Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法
  • 原文地址:https://www.cnblogs.com/SunQi-lvbu/p/6899499.html
Copyright © 2011-2022 走看看