探索C嘎嘎的奇妙世界:第二关---C++的输入与输出

1 C++的输入与输出:

        新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C++刚出来后,也算是一个新事物, 那C++是否也应该向这个美好的世界来声问候呢?我们来看下C++是如何来实现问候的呢?

        在 C++的不断发展中,出现了许多新的头文件,它们为编程带来了更多的便利和强大的功能。话不多说,请看代码:

#include<iostream>
using namespace std;

        在讲解上述代码之前,首先我们要引进一个新朋友<iostream>,我们可以理解为是c语言中<stdio.h> 的升级版本,功能和库方面,都更加全面,同时也是是 C++中极为重要的一个头文件!

        

        同时在上述代码中,我们还写了一行"using namespace std"这可是我们上期说过的命名空间展开啊,注意stdC++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中,说明在C++中头文件中的函数也被命名空间包起来了,这样就更方便,我们对其中的函数进行使用了~

ps:std是C++标准库的命名空间,如何展开std使用更合理呢?

1. 在日常练习中,建议直接using namespace std即可,这样就很方便。

2. using namespace std 展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型 /
/ 函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模
大,就很容易出现。所以建议在项目开发中使用,像 std::cout 这样使用时指定命名空间 +
using std::cout 展开常用的库对象 / 类型等方式。

1 1 输出:

        下面引入正题,C++是怎么进行输出的呢?请看代码:

#include<iostream>using namespace std;int main()
{cout<<"Hello world!!!"<<endl;return 0;
}

在上述代码中:有一个这样"cout"和"endl"这两个陌生面孔,让我来为你们一一讲解

1.1.1 cout---预定义的的输出流:

        cout  (console output,控制台输出)是标准输出流对象。它可以通过使用操作符  <<  来依次输出各种类型的数据。我们可以用它输出整数、浮点数、字符串、字符等各种数据类型,例如:

cout << 10 << " " << 3.14 << " " << "Hello, C++!"<<endl;//   10 3.14 Hello, C++!

        它具有很强的灵活性和易用性,可以方便地将不同类型的数据组合在一起输出,并且输出的顺序与代码中指定的顺序一致。此外,还可以通过一些控制符来调整输出的格式,比如设置精度、换行等。 cout  是 C++中进行基本输出操作的重要工具,在程序开发中被广泛应用。

        那么endl的作用是什么呢?其实它可以等效为我们c语言中的换行符,有它就换行,没有就不用换行了

        接下来就让我们来看一下上述代码中"<<"这个操作符,不是我们C语言中的左移操作符吗?在这里当然不能这样理解,在C++中,我们赋予了它另外一种功能"插入运算符(Insertion Operator)"那我们就来了解一下这个操作符:

        "<<" 操作符通常被称为插入运算符(Insertion Operator)。它用于将数据输出到标准输出设备(通常是屏幕)。当使用 cout << 时,它会将右侧的值输出到屏幕上。<< 操作符可以连续使用,将多个值输出到同一行。它的主要作用是将数据从程序内部传递到外部输出设备,以便用户可以查看程序的运行结果。

1.2 输入:

        那么在C++中是怎么进行输入的呢?请看代码:

int i=0,j=0,k=0;
cin>>i>>j>>k;

        在上述代码中:我们又发现"cin"这样一个陌生的面孔让我来为你讲解:

1.2.1 cin---预定义的输入流:

        cin 是标准输入流对象,用于从标准输入(通常是键盘)读取数据。它是 iostream 库中的一个对象,可以使用提取运算符 >> 从输入流中读取数据,并将其存储到变量中。

        以下是 cin 的一些常见用法:
 
        1. 读取基本数据类型:可以使用 >> 运算符将输入流中的数据读取到基本数据类型的变量中,如整数、浮点数、字符等。

        2.读取字符串:可以使用 >> 运算符读取字符串,但它会在遇到空格或换行符时停止读取。如果要读取一整行字符串,可以使用 getline 函数。

        3.连续读取多个数据:可以使用 >> 运算符连续读取多个数据,每个数据之间用空格或换行符分隔。

        还有很多功能等后期再一一揭晓:

1.3  输入与输出的注意事项:

1. 使用 cout 标准输出对象 ( 控制台 ) cin 标准输入对象 ( 键盘 ) 时,必须 包含 < iostream > 头文件
以及按命名空间使用方法使用 std
2. cout cin 是全局的流对象, endl 是特殊的 C++ 符号,表示换行输出,他们都包含在包含 <
iostream > 头文件中。
3. << 是流插入运算符, >> 是流提取运算符
4. 使用 C++ 输入输出更方便,不需要像 printf/scanf 输入输出时那样,需要手动控制格式。
C++ 的输入输出可以自动识别变量类型。
5. 实际上 cout cin 分别是 ostream istream 类型的对象, >> << 也涉及运算符重载等知识,
这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有
一个章节更深入的学习 IO 流用法及原理。
6. 早期标准库将所有功能在全局域中实现,声明在 .h 后缀的头文件中,使用时只需包含对应
头文件即可,后来将其实现在 std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,
规定 C++ 头文件不带 .h ;旧编译器 (vc 6.0) 中还支持 <iostream.h> 格式,后续编译器已不支持,因
推荐 使用 <iostream>+std 的方式。

7.关于coutcin还有很多更复杂的用法,比如控制浮点数输出精度,控制整形输出进制格式等 等。因为C++兼容C语言的用法,这些又用得不是很多,我们这里就不展开学习了。后续再一一讲解~

        那么就有小伙伴要问了,那我们在C语言中学习的“printf”和"scanf"还可以继续使用吗?回答是:当然!C++兼容C语言嘛,但是旧的不去新的不来嘛,慢慢适应的过程!!!

        到此C++中的输入和输出就讲解完毕了,希望这篇博客能给您带来一些启发和思考!那我们下次再一起探险喽,欢迎在评论区进行讨论~~~

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 源代码目录作用归纳备忘

PyTorch 是一个开源的机器学习库&#xff0c;广泛用于应用程序如计算机视觉和自然语言处理。它是由 Facebook 的 AI 研究团队开发的&#xff0c;并且是基于 Torch 库。PyTorch 的设计非常模块化&#xff0c;主要可以分为几个核心部分&#xff1a; 1. torch 这是 PyTorch 的核…

redis易懂快速安装(linux)2024

1.首先打开虚拟机系统 2.打开终端&#xff0c;输入su - 输入管理员密码&#xff0c;进入管理员用户 3.输入inconfig查看ip地址 4.打开final shell 连接虚拟机&#xff0c;输入ip和root用户以及密码 5.连接成功 6.输入 cd /usr/local/src/ 进入要安装的文件夹 6.点击上传按钮…

IO系列(十) -TCP 滑动窗口原理介绍(上)

一、摘要 之前在上分享网络编程知识文章的时候&#xff0c;有网友写下一条留言&#xff1a;“可以写写一篇关于 TCP 滑动窗口原理的文章吗&#xff1f;”。 当时没有立即回复&#xff0c;经过查询多方资料&#xff0c;发现这个 TCP 真的非常非常的复杂&#xff0c;就像一个清…

Linux基础 (十八):Libevent 库的安装与使用

目录 一、Libevent 概述 1.0 Libevent的安装 1.0.1 使用源码方式 1.0.2 终端命令行安装 1.1 主要特性 1.2 主要组件 1.3 Libevent 使用模型 1.4 原理 1.5 使用的基本步骤 1.5.1 初始化事件基础设施 1.5.2. 创建和绑定服务器套接字 1.5.3. 设置监听事件 1.5.4. 定义…

Kinodynamic RRT-connect(Rapidly-exploring Random Tree-Connect)算法例子

Kinodynamic RRT-connect(Rapidly-exploring Random Tree-Connect)算法 是一种结合了快速扩展随机树(RRT)和动力学约束的路径规划算法。它特别适用于需要考虑动力学和运动学约束的复杂机器人系统,如人形机器人、无人驾驶汽车等。 主要原理 RRT基本原理: RRT算法通过在…

Pytorch Lighting Hydra库的学习

MVsplat 使用了Hydra 库来进行参数的配置 : 在文件运行的最开始的地方, 使用装饰器 使用 Hydra 这个库&#xff0c;一般都是对于 Main 函数进行修饰的&#xff0c;需要读取代码中的 yaml 文件&#xff1a; hydra.main(version_baseNone,config_path"../config", …

【Android面试八股文】你了解 pthread 吗?创建一个新线程会占用多少内存?

文章目录 一、你了解pthread吗?二、创建一个新线程会占用多少内存?三、在实际开发中,你会如何优化线程的内存使用呢?一、你了解pthread吗? 面试官: 你了解 pthread 吗? 求职者: 是的,我了解 pthread。pthread 是 POSIX threads 的缩写,是一种在 UNIX 和类 UNIX 系统…

SpringBoot中获取当前请求的request和response

在Spring Boot中&#xff0c;你可以以多种方式获取当前请求的HttpServletRequest和HttpServletResponse对象。以下是几种常见的写法示例&#xff1a; 1. 在方法参数中声明 最常见和推荐的方式是在控制器方法的参数中直接声明HttpServletRequest和HttpServletResponse对象。Sp…

java打印99乘法表

public class NineNineMulTable{public static void main(String[] args){for(int i 1; i < 9; i ){for(int j 1; j < i; j ){System.out.print(j " * " i " " i * j "\t");//再次先输出j在输出i是打印出来是1*2&#xff0c;2*2}S…

宝藏速成秘籍(7)堆排序法

一、前言 1.1、概念 堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法 。堆是一个近似 完全二叉树 的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点。 1.2、排…

模板方法模式(大话设计模式)C/C++版本

模板方法模式 C #include <iostream> using namespace std;class TestPaper { public:void TestQ1(){cout << "杨过得到&#xff0c;后来给了郭靖&#xff0c;炼成倚天剑&#xff0c;屠龙刀的玄铁可能是[ ]\na.球磨铸铁 b.马口贴 c.高速合金钢 d.碳素纤维&q…

Linux——ansible剧本

剧本&#xff08;playbook&#xff09; 现在&#xff0c;可以写各种临时命令 但如果&#xff0c;想把所有步骤&#xff0c;集合到一起&#xff0c;写到同一个文件里 让ansible自动按顺序执行 就必须要写“剧本” 剧本里面&#xff0c;也可以写临时命令&#xff0c;但是剧本…

C++中bool类型的使用细节

C中bool类型的使用细节 ANSIISO C标准添加了一种名叫bool的新类型(对 C来说是新的)。它的名称来源于英国数学家 George Boole&#xff0c;是他开发了逻辑律的数学表示法。在计算中&#xff0c;布尔变量的值可以是true或false。过去&#xff0c;C和C一样&#xff0c;也没有布尔…

Kafka 负载均衡挑战及解决思路

本文转载自 Agoda Engineering&#xff0c;介绍了在实际应用中&#xff0c;如何应对 Kafka 负载均衡所遇到的各种挑战&#xff0c;并提出相应的解决思路。本文简要阐述了 Kafka 的并行性机制、常用的分区策略以及在实际操作中遇到的异构硬件、不均匀工作负载等问题。通过深入分…

重生之 SpringBoot3 入门保姆级学习(19、场景整合 CentOS7 Docker 的安装)

重生之 SpringBoot3 入门保姆级学习&#xff08;19、场景整合 CentOS7 Docker 的安装&#xff09; 6、场景整合6.1 Docker 6、场景整合 6.1 Docker 官网 https://docs.docker.com/查看自己的 CentOS配置 cat /etc/os-releaseStep 1: 安装必要的一些系统工具 sudo yum insta…

继承-进阶-易错点

子类同名方法隐藏父类方法 即使调用不匹配也不会再去父类寻找&#xff0c;而是直接报错 //下面代码输出结果&#xff1a;( )&#xfeff;class A { public:void f(){ cout<<"A::f()"<<endl; }int a; };class B : public A { public:void f(int a){c…

【Android面试八股文】Android开发中怎样判断当前线程是否是主线程?

文章目录 1. 使用 `Looper.getMainLooper()`2. 使用 `Handler`3. 使用 `Activity` 或 `View` 的方法4. 使用 Thread 类的 isMainThread 方法示例代码在Android开发中,判断当前线程是否是主线程(也称为UI线程)非常重要,因为只有主线程才能更新UI。 以下是几种常用的方法来判…

Qt6的获取调色板颜色和Qt5不一样了

Qt5中是[static] QRgb QColorDialog::getRgba(QRgb initial 0xffffffff, bool *ok nullptr, QWidget *parent nullptr) 而Qt6更加直接了&#xff0c;[static] QColor QColorDialog::getColor(const QColor &initial Qt::white, QWidget *parent nullptr, const QStri…

Excel使用技巧(一)

一. 快速调整数据位置 已经录入数据的表格&#xff0c;要调整某一列的位置怎么办&#xff1f; 只要选中要调整的数据区域&#xff0c;然后按住Shift键不放&#xff0c;光标放到绿色边框位置后&#xff0c;按下鼠标左键不放拖动即可&#xff1a; 二. 取消合并单元格并恢复数据…

电商项目-day03

文章目录 退出登录流程首先判断前端后端逻辑 登录验证的思路和ThreadLocal讲解 退出登录流程 首先判断前端 首先定义退出请求 // 退出登录 export const Logout () > {return request({url: ${api_name}/logout,method: get,})}const api_name “admin/system/index”; …