标准输入流

简介: 标准输入流

标准输入流对象 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;
}
相关文章
|
6月前
|
架构师 Java 数据库连接
Java异常处理的20个最佳实践:告别系统崩溃
你是否在为如何处理异常而困扰? 你是否曾被面试官问道Java异常处理的最佳实践有哪些? 本文汇总了Java异常处理的20个最佳实践:让你告别系统崩溃,面试游刃有余
1180 2
Java异常处理的20个最佳实践:告别系统崩溃
|
6月前
|
开发者
第十二期乘风伯乐奖--寻找百位乘风者伯乐,邀请新博主入驻即可获奖
乘风伯乐奖,面向阿里云开发者社区已入驻乘风者计划的博主(技术/星级/专家),邀请用户入驻乘风者计划即可获得乘风者定制周边等实物奖励。本期面向阿里云开发者社区寻找100位乘风伯乐,邀请人数月度TOP 1 获奖者(大于108人)可获得AirPods2代!
2768 8
|
Linux Android开发
开源免费版RPA:详细指南[2.0版]
和市面上任何软件一样,全世界都在一起努力创建开源软件。那么RPA有开源的吗?答案是肯定的。但开源RPA生态系统目前尚不成熟。51RPA小编预测,这种情况不会在不久的将来发生变化,因为我们还没有看到支持无代码RPA的主要营利实体。
|
6月前
|
数据可视化 Java 测试技术
【Go语言专栏】Go语言中的内存泄漏检测与修复
【4月更文挑战第30天】Go语言内存泄漏详解:概念、原因、检测与修复。内存泄漏由忘记释放内存、循环引用等引起,Go通过垃圾回收机制管理内存,但仍有泄漏风险。检测方法包括pprof、可视化工具、代码审查和单元测试。修复策略涉及优化代码、使用defer、减少全局变量、弱引用及及时释放资源。实践案例分析有助于理解和解决问题。了解内存管理,防止泄漏,提升Go应用性能和稳定性。
317 0
|
6月前
|
XML Java Android开发
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
783 1
|
C# 容器
WPF框架下,窗体的嵌套显示
WPF框架下,窗体的嵌套显示
222 0
《云上业务稳定性保障实践白皮书》——三.故障管理体系——3.故障管理全流程——3.3.4 故障复盘
《云上业务稳定性保障实践白皮书》——三.故障管理体系——3.故障管理全流程——3.3.4 故障复盘
306 0
|
传感器 C语言 芯片
【STM32】I2C协议完成温湿度检测
I2C总线是英国的菲利普公司在八十年代初期退出来的一种串行的、半双工的总线,主要是用于一些近距离、低速的芯片之间的通信;I2C总线有两根双向的信号线,一根SDA用于收发数据、一根时钟线SCL用于通信双方时钟的同步。
【STM32】I2C协议完成温湿度检测
|
数据可视化 数据挖掘 数据处理
基于Python的大数据分析实战篇(一)
基于Python的大数据分析实战篇(一)
326 0
基于Python的大数据分析实战篇(一)
|
安全 编译器 C++
C/C++ Capstone 引擎源码编译
Capstone 是一个轻量级的多平台、多架构的反汇编框架。Capstone 旨在成为安全社区中二进制分析和反汇编的终极反汇编引擎。Capstone的编译非常简单只需要一步即可轻松得到对应的Lib库文件,如下将介绍该引擎如何被编译,以及简单的测试编译。
219 0
C/C++ Capstone 引擎源码编译