当前位置: 首页 > news >正文

C++输入输出(cin和cout)

在C语言中,我们通常会使用 scanf (scan format)和 printf(print format) 来对数据进行输入输出操作。在C++语言中,C语言的这一套输入输出库我们仍然能使用,但是 C++ 又增加了一套新的、更容易使用的输入输出库。
【例1】简单的输入输出代码示例:

#include<iostream>
using namespace std;
int main(){
    int x;
    float y;
    cout<<"Please input an int number:"<<endl;
    cin>>x;
    cout<<"The int number is x= "<<x<<endl;
    cout<<"Please input a float number:"<<endl;
    cin>>y;
    cout<<"The float number is y= "<<y<<endl;   
    return 0;
}

运行结果如下(↙表示按下回车键):
Please input an int number:
8↙
The int number is x= 8
Please input a float number:
7.4↙
The float number is y= 7.4

C++ 中的输入与输出可以看做是一连串的数据流输入即可视为从文件或键盘中输入程序中的一串数据流,而输出则可以视为从程序中输出一连串的数据流到显示屏或文件中

在编写 C++ 程序时,如果需要使用输入输出时,则需要包含头文件iostream,它包含了用于输入输出的对象,例如常见的cin表示标准输入、cout表示标准输出、cerr表示标准错误。

iostream 是 Input Output Stream 的缩写,意思是“输入输出流”。

cout 和 cin 都是 C++ 的内置对象,而不是关键字。C++ 库定义了大量的类(Class),程序员可以使用它们来创建对象,cout 和 cin 就分别是 ostream 和 istream 类的对象,只不过它们是由标准库的开发者提前创建好的,可以直接拿来使用。这种在 C++ 中提前创建好的对象称为内置对象
使用 cout 进行输出时需要紧跟<<运算符,使用 cin 进行输入时需要紧跟>>运算符,这两个运算符可以自行分析所处理的数据类型,因此无需像使用 scanf 和 printf 那样给出格式控制字符串。
第 6 行代码表示输出"Please input a int number:"这样的一个字符串,以提示用户输入整数,其中endl表示换行,与C语言里的\n作用相同。当然这段代码中也可以用\n来替代endl,这样就得写作:

cout<<"Please input an int number:\n";

endl 最后一个字符是字母“l”,而非阿拉伯数字“1”,它是“ end of line”的缩写。

第 7 行代码表示从标准输入(键盘)中读入一个 int 型的数据并存入到变量 x 中。如果此时用户输入的不是 int 型数据,则会被强制转化为 int 型数据。
第 8 行代码将输入的整型数据输出。从该语句中我们可以看出 cout 能够连续地输出。同样 cin 也是支持对多个变量连续输入的,如下所示。

【例2】cin 连续输入示例:

#include<iostream>
using namespace std;
int main(){
    int x;
    float y;
    cout<<"Please input an int number and a float number:"<<endl;
    cin>>x>>y;
    cout<<"The int number is x= "<<x<<endl;
    cout<<"The float number is y= "<<y<<endl;   
    return 0;
}

运行结果:
Please input an int number and a float number:
8 7.4↙
The int number is x= 8
The float number is y= 7.4   

第 7 行代码连续从标准输入中读取一个整型和一个浮点型数字(默认以空格分隔),分别存入到 x 和 y 中。
输入运算符>>在读入下一个输入项前会忽略前一项后面的空格,所以数字 8 和 7.4 之间要有一个空格,当 cin 读入 8 后忽略空格,接着读取 7.4。

相关文章:

  • C++运算符重载的概念和语法
  • GetLastError,ErrLookUp,$err,hr,$eax
  • 字符集和字符编码(Charset Encoding)
  • 进程
  • Windows中的对象
  • Windows对象、句柄与MFC对象
  • C++结构体
  • C++ 指针运算符( 和 *)
  • C++中 引用与取地址的区别
  • C/C++语言中函数参数传递的三种方式(x,*x,x)
  • VC 和 VS 区别
  • 什么是Windows API
  • c++类与对象用多文件编写以及vs的操作步骤
  • DUMPBIN工具的使用
  • DLL的创建和使用(含代码)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 0x05 Python数据分析,Anaconda八斩刀
  • echarts的各种常用效果展示
  • happypack两次报错的问题
  • js中forEach回调同异步问题
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 读懂package.json -- 依赖管理
  • 仿天猫超市收藏抛物线动画工具库
  • 警报:线上事故之CountDownLatch的威力
  • 新书推荐|Windows黑客编程技术详解
  • 学习Vue.js的五个小例子
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 阿里云服务器如何修改远程端口?
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)linux使用docker容器运行mysql
  • (九)信息融合方式简介
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***通过什么方式***网吧
  • .cn根服务器被攻击之后
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net Stream篇(六)
  • .net 受管制代码
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • :“Failed to access IIS metabase”解决方法
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [<MySQL优化总结>]