前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++输入输出流

C++输入输出流

作者头像
用户2929716
发布2018-08-23 13:19:57
7510
发布2018-08-23 13:19:57
举报
文章被收录于专栏:流媒体

要点

  • cin>> 最常见的是获取输入的一个字符或数字。cin>>会自动过滤掉不可见字符(如空格、换行、回车等)
  • get(c) 用来接收字符,只获取一个字符,可以接收空格、换行、回车,遇回车结束。
  • cin.get(数组名,接收字符数目) 用来接收字符串,可以接收空格,遇回车结束。由于字符串最后一个字符是'\0',所以当输入中超过len-1个字符时,实际只能接受len-1个字符。
  • cin.get() 没有参数。主要用于舍弃输入流中不需要的字符,或者舍弃回车,即舍弃输入流中的一个字符。
  • cin.getline(接收字符串到m,接收个数n,结束字符) 接收一个字符串,可以接收空格等,最后一个字符为‘\0’。结束符可以通过设置第三个参数自己设置,默认是回车。m不能为string类型。
  • cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF( - 1)
代码语言:javascript
复制
int main() {
    char c;
    char buf[10];
    c = cin.peek();
    if (c > '0'&&c < '9') {
        cin >> buf;
        cout << buf << endl;
    }
    else {
        cout << "first char is not number" << endl;
    }
}

peek

  • cin.putback() 作用是将前面用get或者getline函数从输入流中读取的字符ch返回到输入流,插入到当前指针的位置,供后面读取。
代码语言:javascript
复制
int main() {
    char c;
    char buf[10];
    cout << "input word:" << endl;
    c = cin.get();
    if (c > '0'&&c < '9') {
        cin.putback(c);
        cin >> buf;
        cout << buf;
    }
    else {
        cout << "first char is not number" << endl;
    }
    return 0;
}

3.png

4.png

示例

代码语言:javascript
复制
#include "iostream"
using namespace std;

int main()
{
    char a, b, c;
    //cin>>会过滤不可见字符(空格、回车、换行)。
    cin >> a >> b >> c;
    cout << "a=" << a << ",b=" << b << ",c=" << c << endl;
    char buf[10];
    cin >> buf;
    cout <<"[cin >> buf]="<< buf << endl;
    char d;
    //接收一个字符
    cin.get(d);
    cout << "[get(d)]=" << d << " "<<(int)d<<endl;
    //舍弃流中的一个字符(包括空格、回车、换行)
    cin.get();
    //用来接收字符串,可以接收空格,遇回车结束。
    //数组的最后一个字符会是‘\0’
    cin.get(buf,10);
    cout <<"[cin.get(buf,10)]=" <<buf << endl;
    //cin.getline(接收字符串到m,接收个数n,结束字符)。
    //可以接受(空格、回车、换行)
    cin.getline(buf, 10);
    cout <<"getline(buf, 100)="<< buf << endl;
    return 0;
}

测试结果

测试结果

输入方式,这里为了区分开始和结束,使用[ ]来演示,而不是输入内容

  • [ 1 2 3 回车] 这时候1,2,3分别设置到了a,b,c中。证实了<<会过滤掉不可见字符
  • [4 回车]
    • buf的内容为4;
    • cin.get(d)后,d的结果为空格(从ASCii值可知);
    • cin.get()吸收了回车;
  • [123456789123]
    • get(buf,10)后buf的内容为123456789说明只能接受10-1个字符,最后一个为'\0'。
    • getLine(buf,10)接收剩余的字符。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 要点
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档