zoukankan      html  css  js  c++  java
  • 从标准输入读取一行字符串的方法

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

    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++的库函数吧

  • 相关阅读:
    System.IO命名空间
    Java调用Http/Https接口(8,end)OkHttp调用Http/Https接口
    javascript上传组件
    在ubuntu下安装MonoDevelop
    Sql Server中Null+nvarchar结果为null
    利用iframe实现javascript无刷新载入整页
    C#序列化和反序列化
    vmware7.0下搭建ubuntuNat上网/C++开发环境
    javascript模态窗口Demo
    为博客添加在线台湾卫星电视播放功能
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/14004373.html
Copyright © 2011-2022 走看看