关于getline的几点

一、string类的getline函数(全局函数)
        getline()函数的定义如下所示
        1. istream& getline ( istream &is , string &str , char delim );
        2. istream& getline ( istream &is , string &str );
is 进行读入操作的输入流
str 用来存储读入的内容
delim  终结符,遇到该字符停止读取操作,不写的话默认为回车,如定义2中的示例。

函数的返回值:
        与参数is一样。
        前方预警,请各位看官注意!!!
        所以在使用while(getline(cin,line))的时候,判断while()是否结束循环的条件不是输入流是否输入了回车(或getline函数里你自己定义的结束符),而是getline这个函数是否输入无效(这么说好像有点绕,给你们来个爽快的)。直到你输入了EOF或者ctrl+z,while循环才会结束,而且要注意的是,只有getline函数动作完毕时,while才会执行内部的循环,例如
        while(getline(cin,str))
        {
                cout<<str<<endl;
        }
       直到你输入了回车或者你自己设定的结束符,str这个字符串才会被输出。理解了这一层就不难理解为什么输入回车while却无法跳出循环的现象了,这其实还是最基本的while条件判断而已(只要判断getline的返回值是否为真即可),只不过很容易将新手迷惑而已。

        注意:上面讲到的getline(cin,str)实际是一个全局函数,本身属于string类。所以你使用该函数的时候请记得添加#include <string>头文件。下面介绍一个与getline很相似的函数cin.getline。

二、输入流成员函数cin.getline            
        原型如下 
        cin.getline(char* charr,int num,char f);
       
         向字符数组charr(注意定义类型,是字符数组不是字符串)中输入num个字符,输入过程中达到num个数或者提前遇到f字符,输入结束。

        注:这里的getline是输入流对象的成员函数,即istream::getline,使用时需要头文件#include<iostream>。

转自:http://blog.csdn.net/u013660169/article/details/41726973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值