【C++知识总结2】C++里面的小配角cout和cin

一、引入

第一个关于输入输出的C++代码

复制代码
#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
    cout<<"Hello world!!!"<<endl;
    return 0;
}
  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。

  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,也可以使用\n来输出换行,他们都包含在包含<iostream >头文件中。

  3. <<是流插入运算符,>>是流提取运算符。

  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。
    **值得注意的是:**在早期,标准库将所有功能实现都在全局域中,并在以.h为后缀的头文件中声明。使用时,只需要包含相应的头文件即可。然而,后来这些实现被迁移到了std命名空间下。为了与C头文件区分开,并确保正确地使用命名空间,C++头文件被规定为不带.h后缀。值得注意的是,在一些旧的编译器(如vc 6.0)中,仍然支持<iostream.h>这种格式,但后续的编译器已经不再支持。因此,笔者建议在编写C++代码时,应使用<iostream>并使用std命名空间的方式来确保兼容性和规范性。

下面详细介绍C++的输入输出

二、什么时输入和输出

C++的I/O操作是在流中进行的,流本质上是字节的序列。当字节流从外部设备(如键盘、磁盘驱动器、网络连接等)流向内存时,我们称之为输入操作 。相反,当字节流从内存流向外部设备(如显示屏、打印机、磁盘驱动器、网络连接等)时,我们称之为输出操作

I/O 库头文件

头文件 函数和描述
<iostream> 该文件明确界定了cin、cout、cerr与clog这些对象,它们各自对应着标准输入流、标准输出流、非缓冲的标准错误流,以及缓冲的标准错误流。
<iomanip> 该文件通过所谓的参数化的流操纵器,比如 setw 和 setprecision,来声明对执行标准化 I/O 有用的服务。
<fstream> 该文件为用户控制的文件处理声明服务。

标准输出流(cout)

预定义的对象 coutiostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的,如下所示:

复制代码
#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Hello C++";
 
   cout << "输出的字符串是 : " << str << endl;
}

C++ 编译器根据要输出的变量的数据类型,自动选择合适的流插入运算符来显示对应的值。<< 运算符被重载以输出内置类型(如整型、浮点型、double型、字符串和指针)的数据项。如上例所示,流插入运算符 << 可以在一个语句中多次使用,以连续输出多个数据项。endl 则用于在行末添加一个换行符,从而实现换行。

标准输入流(cin)

预定义的对象**cin** 是 iostream 类的一个实例。这个对象被关联到标准输入设备,通常情况下指的是键盘。通过使用流提取运算符 >>,我们可以与 cin 对象进行交互,如下所示:

复制代码
#include <iostream>
 
using namespace std;
 
int main( )
{
   char name[50];
 
   cout << "请输入您的名称: ";
   cin >> name;
   cout << "您的名称是: " << name << endl;
 
}

C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据。

值得注意的是: cin 输入的时候是按照空白字符(不管是换行还是回车)分割的。

如果要按空格分割直到回车:

复制代码
while( cin >> a ){
    //...
    if(cin.get()=='\n'){
        break;
    }
}
//cin.get() 则是直接读取,不忽略空白字符缓冲。

今天的分享就到这啦😉

如果我的文章对您有帮助,

"点赞" "收藏" "关注" 一键三连哦!

想了解更多知识请前往重生之我在VS写bug

如果以上内容有什么问题,欢迎留言,大家一起学习,共同进步。

相关推荐
朝朝又沐沐3 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
薰衣草23334 小时前
一天两道力扣(6)
算法·leetcode
逝雪Yuki4 小时前
Leetcode——287. 寻找重复数
c++·leetcode·二分查找·双指针·环形链表
剪一朵云爱着4 小时前
力扣946. 验证栈序列
算法·
遇见尚硅谷4 小时前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
天天开心(∩_∩)5 小时前
代码随想录算法训练营第三十二天
算法
YouQian7725 小时前
(AC)缓存系统
算法·缓存
艾莉丝努力练剑5 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
科大饭桶5 小时前
数据结构自学Day13 -- 快速排序--“前后指针法”
数据结构·算法·leetcode·排序算法·c
李永奉5 小时前
C语言-流程控制语句:for循环语句、while和do…while循环语句;
c语言·开发语言·c++·算法