标准输入流

简介: 标准输入流

标准输入流对象 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;
}
相关文章
|
22天前
|
架构师 Java 数据库连接
Java异常处理的20个最佳实践:告别系统崩溃
你是否在为如何处理异常而困扰? 你是否曾被面试官问道Java异常处理的最佳实践有哪些? 本文汇总了Java异常处理的20个最佳实践:让你告别系统崩溃,面试游刃有余
707 2
Java异常处理的20个最佳实践:告别系统崩溃
|
7月前
|
存储 Linux C++
C++项目实战-多进程(一篇文章)(三)
C++项目实战-多进程(一篇文章)(三)
72 0
|
7月前
|
XML JSON 前端开发
Gin快速入门2
Gin快速入门2
51 0
|
22天前
|
数据可视化 Java 测试技术
【Go语言专栏】Go语言中的内存泄漏检测与修复
【4月更文挑战第30天】Go语言内存泄漏详解:概念、原因、检测与修复。内存泄漏由忘记释放内存、循环引用等引起,Go通过垃圾回收机制管理内存,但仍有泄漏风险。检测方法包括pprof、可视化工具、代码审查和单元测试。修复策略涉及优化代码、使用defer、减少全局变量、弱引用及及时释放资源。实践案例分析有助于理解和解决问题。了解内存管理,防止泄漏,提升Go应用性能和稳定性。
|
Linux Android开发
开源免费版RPA:详细指南[2.0版]
和市面上任何软件一样,全世界都在一起努力创建开源软件。那么RPA有开源的吗?答案是肯定的。但开源RPA生态系统目前尚不成熟。51RPA小编预测,这种情况不会在不久的将来发生变化,因为我们还没有看到支持无代码RPA的主要营利实体。
8681 0
|
10月前
|
机器学习/深度学习 Ubuntu 决策智能
ubuntu16.04 下ROS操作系统学习笔记(一)ROS-kinetic安装
ubuntu16.04 下ROS操作系统学习笔记(一)ROS-kinetic安装
101 0
|
11月前
|
C# 容器
WPF框架下,窗体的嵌套显示
WPF框架下,窗体的嵌套显示
186 0
|
7月前
|
关系型数据库 MySQL 数据库
C++项目实战-mysql数据库安装及配置
C++项目实战-mysql数据库安装及配置
63 0
|
7月前
|
Ubuntu 开发工具 数据安全/隐私保护
C++项目实战-环境的搭建
C++项目实战-环境的搭建
61 0
|
7月前
|
C++
C 通过宏定义重定义malloc - free,预防内存泄露
C 通过宏定义重定义malloc - free,预防内存泄露
66 0

热门文章

最新文章