C++的流提取(>>)(输入) & 流插入(<<)(输出)

什么是输入和输出流

流提取(<<)(输入)

  • 理解:我们可以理解为,输入到io流里面,比如是cin,然后从输入流中读取数据

流插入(<<)(输出)

  • 理解:我们可以理解把数据插入到io流里面,比如是cout,然后通过这个流将数据输出到屏幕或其他输出设备。

C++输入流和输出流的优点

  1. 类型安全C++的I/O流机制可以自动识别变量类型(不需要写整形,字节这样的类型),从而提供类型安全。这意味着编译器会在编译时检查类型不匹配错误,而C语言中的 printfscanf 系列函数在运行时才检查类型,容易导致运行时错误。

  2. 可读性:C++的流式I/O操作符 <<>> 提供了直观的语法,使得代码易于阅读和编写。与C语言的格式化字符串相比,C++的I/O操作符更易于理解。

  3. 易于使用C++的I/O机制使用起来更简单,不需要记住复杂的格式化字符串。对于基本数据类型,直接使用 <<>> 即可完成输入输出。

  4. 扩展性C++的I/O流库可以很容易地扩展以支持自定义类型的输入输出(自定义类型,使用这个比较方便)。通过运算符重载,可以为自定义类型定义 <<>> 运算符,从而实现自定义类型的输入输出。

  5. 面向对象:C++的I/O流库是基于面向对象设计的,std::istreamstd::ostream 是从这些类派生的。这种设计使得I/O操作可以与面向对象的程序设计方法无缝集成。

  6. 本地化支持:C++的I/O流库支持本地化

  7. 异常处理:C++的I/O操作可以抛出异常,这使得错误处理更加灵活和强大。而C语言的I/O操作通常只是返回一个错误码。

  8. 缓冲管理C++的I/O流库自动管理缓冲区,开发者不需要手动刷新缓冲区。例如,std::endl 不仅插入一个换行符,还刷新了输出缓冲区,而C语言中的 \n 仅插入换行符。

注意事项

  • 一般情况下我们可以 using namespace std,实际项目开发中不建议 using namespace std,因为可能导致冲突
  • 这里我们没有包含 <stdio.h>,也可以使用 printf 和 scanf,在包含 <iostream> 后间接包含了。VS 系列编译器是这样的,其他编译器可能会报错。

C++输入流和输出流的使用

流提取(<<)(输入)

  • 操作:使用 >> 操作符,你可以从 std::cin 中读取不同类型的数据,如整数、浮点数、字符、字符串等。
  • 理解:我们可以理解为,输入到io流里面,比如是cin,然后从输入流中读取数据
  • 例子
#include<iostream>//头文件
int number;
std::cin >> number; // 从标准输入读取一个整数

流插入(<<)(输出)

  • 操作:使用 << 操作符,你可以向 std::cout 中写入数据,如文本、变量的值等。
  • 理解:我们可以理解把数据插入到io流里面,比如是cout,然后通过这个流将数据输出到屏幕或其他输出设备。
  • 例子
#include<iostream>//头文件
int number = 42;
std::cout << number << std::endl; // 向标准输出写入一个整数和一个换行符

std::endl

std::endl 是一个操纵符,用于向输出流中插入一个换行符,并刷新输出流。它通常与流插入操作符 << 一起使用。

  • 操作:当你向 std::cout 使用 std::endl 时,它会输出一个换行符,并将输出流缓冲区的内容刷新到标准输出设备。
std::cout << "Hello, World!" << std::endl; // 输出文本并换行

关系

  • std::cin 使用流提取操作符 >> 来从输入流中读取数据。
  • std::cout 使用流插入操作符 << 来向输出流中写入数据。
  • std::endl 通常与 std::cout 一起使用,用于在输出后添加换行并刷新输出流。

命名空间的展开( using namespace std

在C++中,命名空间(namespace)是一种封装全局标识符(如变量名、函数名、类名等)的方式,以防止不同代码库中的同名标识符发生冲突。std 是C++标准库的命名空间,它包含了标准库中的所有实体。(简单说就是,std::coutstd::cinstd::endl 都是 std 命名空间中定义的,你不想去域里面访问,直接取消就可以)

代码

//代码不展开
#include<iostream>//头文件
int main()
{
    //代码不展开
    std::cout << "why" << std::endl;//打印出来why
	return 0;
}




//代码展开
#include<iostream>//头文件
using namespace std;//取消空间的折叠
int main()
{
    cout << "why" << endl;//打印出来why
	return 0;
}

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值