C++中get和getline函数详解

get函数函数原型有多个,其中比较简单的2个是:

char get();
istream &get(char c);

前者提取的字符作为函数值,后者提取的字符赋值给参数c,使用get函数从键盘提取自负的格式分别为:

cin.get();
cin.get(字符变量c);
#include<iostream>
using namespace std;
int main(){
    char ch;
    cout << "输入字符串: ";
    while((ch=cin.get())!=EOF)
        cout.put(ch);
    return 0;
}

window系统下EOF输入为Ctrl+Z,MacOS系统下EOF为control+D。

函数getline()输入一行字符,getline函数原型是:

istream &getline(char *buf, int n, char ch='\n');

功能是最多提取n-1个字符放在buf为首地址的缓冲区中,参数ch为终止符,隐含的终止符为换行符。

使用getline函数从键盘提取字符串的格式为:

cin.getline(字符指针, 整数n, 终止界定符);

输入字符少于n-1时,接受实际输入的字符数,并将缓冲区的回车符清除,如输入字符数不少于n-1时,多余的字符及回车符留在缓冲区。该函数不能接受换行字符'\n'。

该函数终止读取字符的条件为:

  1. 读取n-1个字符
  2. 遇到参数指定的终止符
  3. 遇到文件结束符(ctrl+Z)或回车符
#include<iostream>
using namespace std;
const int SIZE=80;
int main(){
    char buf[SIZE];
    int lcnt = 0, lmax = -1;
    cout << "输入若干行字符:";
    while (cin.getline(buf, SIZE)) {  // 用ctrl+Z作为输入流结束标志
        int count = cin.gcount()-1;   // cin.gcount()的输出为包含回车符的串长度
        lcnt++;
        if (count > lmax)
            lmax = count;
        cout << "line#" << lcnt << ": " << count << endl;
        cout.write(buf, count).put('\n').put('\n');
    }
    cout << endl;
    cout << "最长行字符数: " << lmax << endl;
    cout << "总行数: " << lcnt << endl;
    return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值