当前位置:首页 » 《资源分享》 » 正文

【C++掌中宝】玩转C++标准输入输出(简洁明了)

6 人参与  2024年09月25日 16:00  分类 : 《资源分享》  评论

点击全文阅读


在这里插入图片描述

文章目录

前言1. I/O库头文件2. C++的标准输入输出——\<iostream\>3. 基本用法3.1 标准输出流(cout)3.2 标准输入流(cin)3.3 标准错误流(cerr)3.4 标准日志流(clog) 4. 内容补充结语

前言

C++ 标准库提供了一组丰富的输入/输出功能,本章将讨论 C++ 编程中最基本和最常见的 I/O 操作——C++的标准输入输出。

C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作

1. I/O库头文件

下列的头文件在 C++ 编程中很重要。

头文件函数和描述
<iostream>该文件定义了 cin、cout、cerrclog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
<iomanip>该文件通过所谓的参数化的流操纵器(比如 setwsetprecision),来声明对执行标准化 I/O 有用的服务。
<fstream>该文件为用户控制的文件处理声明服务。

2. C++的标准输入输出——<iostream>

<iostream> 是 Input Output Stream 的缩写,是标准的输入、输出流库, 定义了几个常用的流类和操作符,允许程序与标准输入输出设备(如键盘和屏幕)进行交互。

以下是<iostream>库的详细使用说明,包括其主要类和常见用法示例。

主要类

std::istream:用于输入操作的抽象基类。std::ostream:用于输出操作的抽象基类。std::iostream:继承自std::istreamstd::ostream,用于同时进行输入和输出操作。std::cin:是 istream 类的对象,它是主要面向窄字符(narrow characters (of type char))的标准输入流对象,通常与键盘关联。std::cout:是 ostream 类的对象,它是主要面向窄字符的标准输出流对象,通常与屏幕关联。std::endl: 是 ostream 类的一个函数模板。它不仅仅是一个换行符,还会刷新输出缓冲区。使用 std::endl 可以在输出流中插入一个换行符,并且强制将缓冲区中的内容刷新到目标设备(例如显示器)。这在需要确保输出内容及时显示的情况下特别有用。std::cerr:标准错误输出流对象,是 iostream 类的一个实例,不带缓冲,且每个流插入到 cerr 都会立即输出。通常与屏幕关联。std::clog:标准日志流对象,是 iostream 类的一个实例,带缓冲,通常与屏幕关联。

常用操作符

>>:输入(流提取)操作符,从输入流读取数据。<<:输出(流插入)操作符,将数据写入输出流。

(C语言还用这两个运算符做位运算右移/左移)

3. 基本用法

3.1 标准输出流(cout)

预定义的对象 coutiostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。

cout 是与流插入运算符 << 结合使用的,如下所示:

#include <iostream>using namespace std;int main(){char str[] = "Hello C++";cout << "Value of str is : " << str << endl;}

当上面的代码被编译和执行时,它会产生下列结果:

Value of str is : Hello C++

?注意

C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。

流插入运算符 << 在一个语句中可以多次使用,如上面实例中所示,endl 用于在行末添加一个换行符。

3.2 标准输入流(cin)

预定义的对象 ciniostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。

cin 是与流提取运算符 >> 结合使用的,如下所示:

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

当上面的代码被编译和执行时,它会提示用户输入名称。当用户输入一个值,并按回车键,就会看到下列结果:

请输入您的名称: cplusplus您的名称是: cplusplus

?注意

C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。

流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:

cin >> name >> age;

这相当于下面两个语句:

cin >> name;cin >> age;

3.3 标准错误流(cerr)

预定义的对象 cerriostream 类的一个实例。cerr 对象附属到标准输出设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。

cerr 也是与流插入运算符 << 结合使用的,如下所示:

#include <iostream> using namespace std; int main( ){   char str[] = "Unable to read....";    cerr << "Error message : " << str << endl;}

当上面的代码被编译和执行时,它会产生下列结果:

Error message : Unable to read....

3.4 标准日志流(clog)

预定义的对象 clogiostream 类的一个实例。clog 对象附属到标准输出设备,通常也是显示屏,但是 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。

clog 也是与流插入运算符 << 结合使用的,如下所示:

#include <iostream> using namespace std; int main( ){   char str[] = "Unable to read....";    clog << "Error message : " << str << endl;}

当上面的代码被编译和执行时,它会产生下列结果:

Error message : Unable to read....

?注意

通过这些小实例,我们无法区分 cout、cerr 和 clog 的差异,但在编写和执行大型程序时,它们之间的差异就变得非常明显。所以良好的编程实践告诉我们,使用 cerr 流来显示错误消息,而其他的日志消息则使用 clog 流来输出。

4. 内容补充

使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动指定格式,C++的输入输出可以自动识别变量类型(本质是通过函数重载实现的),其实最重要的是C++的流能更好的支持自定义类型对象的输入输出。

IO流涉及类和对象,运算符重载、继承等很多面向对象的知识,这些知识我们还没有讲解,所以这里我们只能简单认识一下C++ IO流的用法,后面我们会有专门的一个章节来细节IO流库。

cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要通过命名空间的使用方式去用他们。

一般日常练习中我们可以using namespace std,实际项目开发中不建议using namespace std。

这里我们没有包含<stdio.h>,也可以使用printf和scanf,在包含<iostream>间接包含了。vs系列编译器是这样的,但是其他编译器可能会报错。

结语

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。

也可以点点关注,避免以后找不到我哦!

Crossoads主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的动力!

在这里插入图片描述

参考:C++ 基本的输入输出 | 菜鸟教程 (runoob.com)


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/164510.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1