欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > C++的流提取(>>)(输入) 流插入(<<)(输出)

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

2024/10/24 12:24:28 来源:https://blog.csdn.net/Jason_from_China/article/details/142183321  浏览:    关键词:C++的流提取(>>)(输入) 流插入(<<)(输出)

个人主页:Jason_from_China-CSDN博客

所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客

什么是输入和输出流

流提取(<<)(输入)

  • 理解:我们可以理解为,输入到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;//打印出来whyreturn 0;
}//代码展开
#include<iostream>//头文件
using namespace std;//取消空间的折叠
int main()
{cout << "why" << endl;//打印出来whyreturn 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com