• 从标准输入读取一行字符串的方法


    从标准输入读取一行字符串的方法

    1 getline读取一行

    C++中定义了一个在std名字空间的全局函数getline,因为这个getline函数的参数使用了string字符串,所以声明在了< string>头文件中了。

    getline利用cin可以从标准输入设备键盘读取一行,当遇到如下三种情况会结束读操作:1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。

    函数原型有两个重载形式:

    istream& getline ( istream& is, string& str);//默认以换行符结束

    istream& getline ( istream& is, string& str, char delim);

    使用示例:

    #include <string>

    #include <iostream>

    using namespace std;

     

    int main()

    {

        string str;

        getline(cin,str);

        cout<<str<<endl;

        system("pause");

        return 0;

    }

    输入:hello world[回车],输出:

    注意,getline遇到结束符时,会将结束符一并读入指定的string中,再将结束符替换为空字符。因此,进行从键盘读取一行字符时,建议使用getline,较为安全。但是,最好还是要进行标准输入的安全检查,提高程序容错能力。

    cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数。

    5.2 gets读取一行

    gets是C中的库函数,在< stdio.h>申明,从标准输入设备读字符串,可以无限读取,不会判断上限,以回车结束或者EOF时停止读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
    函数原型:char *gets( char *buffer );
    使用示例:

    #include <iostream>

    using namespace std;

    int main()

    {

        char array[20]={NULL};

        gets(array);

        cout<<array<<endl;

        system("pause");

        return 0;

    }

     

    输入:I am lvlv[回车],输出:

    由于该函数是C的库函数,所以不建议使用,既然是C++程序,就尽量使用C++的库函数吧

  • 相关阅读:
    第2章安装和升级MySQL
    1.7.3.4 ENUM和SET约束
    1.7.3.3对无效数据的强制约束
    1.7.3.2外部关键约束
    跨浏览器的事件处理程序-读书笔记
    表单-读书笔记
    【小知识点】一条线的居中问题
    函数表达书-读书笔记
    原型链-读书笔记
    面向对象(三)-读书笔记
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/14004373.html
Copyright © 2020-2023  润新知