标准输入流

简介: 标准输入流

标准输入流对象 cin

重点api:

       cin.get()                                //一次只能读取一个字符

       cin.get(一个参数)                 //读一个字符

       cin.get(三个参数)                 //可以读字符串

       cin.getline()

       cin.ignore()

       cin.peek()

       cin.putback()

标准输入流常见api编程案例

cin接受输入时,>> 会过滤掉不可见字符(例如:空格、回车、TAB等)

也就是说,从第一个非空白符开始读,直到空白符或者文件结束为止

#include <iostream>
using namespace std;
int main01(void)
{
    char    YourName[50];
    int     myInt;
    long    myLong;
    double  myDouble;
    float   myFloat;
    unsigned int myUsigned;
    cout<<"请输入一个int:";
    cin>>myInt;
    cout<<"请输入一个Long";
    cin>>myLong;
    cout<<"请输入一个Double:";
    cin>>myDouble;
    cout<<"请输入你的姓名:";
    cin>>YourName;
    cout<<"\n\n你输入的数是:"<<endl;
    cout<<"int:\t"<<myInt<<endl;
    cout<<"Long:\t"<<myLong<<endl;
    cout<<"double:\t"<<myDouble<<endl;
    cout<<"char *:\t"<<YourName<<endl;
    return 0;
}
int main02(void)
{
    char ch;
    while((ch=cin.get())!=EOF)  //EOF = -1
    {
        cout<<ch;
    }
    return 0;
}
//链式编程:函数的返回值是对象本身,可以当左值使用
int main03(void)
{
    char a,b,c;
    cin.get(a);
    cin.get(b);
    cin.get(c);
    cout<<a<<b<<c<<endl;    //<<重载操作符,其实本质上也是函数
    cout.flush();           //刷新缓冲区
    cin.get(a).get(b).get(c);
    cout<<a<<b<<c<<endl;
    return 0;
}
int main04(void)
{
    char buf1[256];
    char buf2[256];
    cout<<"请输入你的字符串 不超过 256"<<endl;
    cin.getline(buf1,256,'\n');
    cout<<buf1<<endl;
    //cin.getline和cin的区别,能不能带空格
    cin>>buf2; //遇到空格停止提取输入流
    cout<<buf2<<endl;
    return 0;
}
//输入 aa bb cc dd
int main05(void)
{
    int     intchar;
    char    buf1[256];
    char    buf2[256];
    cin>>buf1;
    //istream &ignore( streamsize num=1, int delim=EOF );
    cin.ignore(2);
    // int peek();
    intchar = cin.peek();
    cin.getline(buf2,256);
    cout<<buf2<<endl;
    intchar = cin.peek();
    cout<<intchar<<endl;
    return 0;
}
int main(void)
{
    cout<<"请输入一句话:"<<endl;
    char c = cin.get();
    //输入整数和字符分开处理
    if(c>='0' && c<='9')    //如果是数字
    {
        int n;
        cin.putback(c);  //往输入流中吐出一个数据
        cin>>n;
        cout<<"输入数字:"<<n<<endl;
    }
    else    //否则一定是字符
    {
        cin.putback(c);
        string str;
        getline(cin,str);
        cout<<"输入字符串:"<<str<<endl;
    }
    return 0;
}
相关文章
股票数据分析
股票数据分析
2177 0
股票数据分析
|
前端开发 JavaScript 编译器
最新的前端开发工具和技术
最新的前端开发工具和技术
646 0
|
区块链 JavaScript
以太坊中的国际银行账号iban
简单地说,以太坊中的iban账号是以太坊为了和传统的银行系统对接而引入的概念,web3.js中提供了以太坊地址和iban地址之间的转换方法。 iban:国际银行账号 iban这个概念源于传统的银行系统,其英文全称为International Bank Account Number,即国际银行帐号。
2353 0
|
索引
《R语言编程艺术》——2.8 筛选
本节书摘来自华章计算机《R语言编程艺术》一书中的第2章,第2.8节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1570 0
|
17小时前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
10天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
4天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
420 189