【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

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

相关推荐
大数据追光猿21 分钟前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!38 分钟前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
夏末秋也凉39 分钟前
力扣-回溯-46 全排列
数据结构·算法·leetcode
南宫生39 分钟前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
柠石榴44 分钟前
【练习】【回溯No.1】力扣 77. 组合
c++·算法·leetcode·回溯
Leuanghing44 分钟前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
qy发大财1 小时前
加油站(力扣134)
算法·leetcode·职场和发展
王老师青少年编程1 小时前
【GESP C++八级考试考点详细解读】
数据结构·c++·算法·gesp·csp·信奥赛
qy发大财1 小时前
柠檬水找零(力扣860)
算法·leetcode·职场和发展
瓦力的狗腿子1 小时前
Starlink卫星动力学系统仿真建模番外篇6-地球敏感器
算法·数学建模·simulink