【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

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

相关推荐
HUT_Tyne2652 小时前
力扣--LCR 141.训练计划III
算法·leetcode·职场和发展
pzn25063 小时前
蓝桥杯练习题
c++·算法·蓝桥杯
Zafir20243 小时前
Qt实现窗口内的控件自适应窗口大小
c++·qt·ui
捕鲸叉4 小时前
C++设计模式之组合模式中适用缓存机制提高遍历与查找速度
c++·设计模式·组合模式
奶茶戒断高手4 小时前
【CSP CCF记录】201903-2第16次认证 二十四点
数据结构·c++·算法
xxxmmc4 小时前
Leetcode 290 word Pattern
算法·leetcode·hashmap双映射
羽墨灵丘5 小时前
0-1背包问题(1):贪心算法
算法·贪心算法
shepherd枸杞泡茶5 小时前
C# 数据结构之【队列】C#队列
开发语言·数据结构·c#
黑眼圈的小熊猫5 小时前
数据结构--B树
数据结构·b树