zoukankan      html  css  js  c++  java
  • C++标准输入问题

    1.读取数据量不定的输入数据

    e.g.

    #include <iostream>
    
    using namespace std;
    
    void main()
    {
        
        int sum=0,val=0;
        
        while(cin>>val)//读取数据直到遇到文件尾;
        {
            sum+=val;
        }
        cout<<sum<<endl;
        
        system("pause");
    }

     

    输入 3 4 5 6

    Ctrl+Z  (Windows系统输入文件结束符)

    输出:

     

    while循环条件的求值就是执行:

    cin>>value

    此表达式从标准输入读取下一个数,保存在value中。输入运算符>>返回其左侧运算对象,本例中是cin。因为,循环条件实际上检测的是cin。

    当使用一个istream类对象作为条件时,其效果是检测流的状态。

    如果流是有效的,即未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时(上例中假设读入的值不是一个整数),istream类对象的状态会变为无效。无效的istream类对象使条件表达式为假。

    因此,while循环会一直执行直至遇到文件结束符(或输入错误)。循环体内将当前值加到sum上。

     

    Tip:从键盘输入文件结束符

     

    当从键盘向程序输入数据时,对于如何指出文件结束,不同操作系统有不同的约定。
    在Windows系统中,输入文件结束符的方法是敲Ctrl+Z,然后按EnterReturn健。
    在Unix系统中,包括Mac OS X 系统中,文件结束符输入是用Ctrl+D

     

    2.使用getline读取一整行

    getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)。

    getline只要一遇到换行符就结束读取操作并返回结果,哪怕一开始输入的就是换行符,此时所得结果是个空string。

    和输入运算符一样,getline也会返回它的流参数。因此getline的结果也可以作为判断条件。

    e.g.

     

    void main()
    {
        string line;
        while(getline(cin,line))//每次读入一整行(包括空格),直至到达文件末尾;
        {
            cout<<"输出:"<<line<<endl;
        }
    cout<<endl; }

     

    输入输出如下:

     

    PS:如果需要一次读入多行数据分别处理,可以使用多个getline函数。

    e.g.

     

    void main()
    {
        string s1;
        string s2;
        string s3;
        while(getline(cin,s1)&&getline(cin,s2)&&getline(cin,s3))//每次读入三行,直至到达文件末尾;
        {
            cout<<"s1-"<<s1<<endl;
            cout<<"s2-"<<s2<<endl;
            cout<<"s3-"<<s3<<endl;
        }
    cout<<endl; }

     

    输入输出如下:

     

    参考:C++ primer

     

    一些相关博文:

    C/C++读入多行字符串string

    再论C/C++的多行字串(带空格、回车)输入

    C++如何输入多行字符串(含空格)

    C/C++如何整行读入字符串?

     

     

    PS:在赛码网刷题,形式和lintcode不太一样,需要自己输入数据,做文件包含,声明命名空间,写完整个main,刚开始碰到整个人都是懵比的。

  • 相关阅读:
    六、springboot集成Swagger2
    五、springboot单元测试
    四、Springboot Debug调试
    三、springboot热部署
    二、springboot配置
    一、springboot入门
    SpringBoot整合RabbitMQ
    消息总线
    分布式配置
    路由网关---zuul
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9278883.html
Copyright © 2011-2022 走看看