C++ 基本输入/输出:Cout、Cin、Cerr 示例
什么是 Stream C++?
C++ 为用户提供了许多可用于执行输入/输出任务的库。这些任务以字节序列(通常称为流)的形式完成。
这些流分为两部分:
流的类型
- 输入流: 这是一种流类型,其中字节从键盘等设备流向主存储器。
- 输出流: 这是一种字节以相反方向流动的流类型,即从主存储器流向显示屏等设备。
流如何工作?
C++ 流的工作原理如下:
- 首先,用正确的类型初始化流。
- 接下来你应该说明 I / O 将使用 get/put 指针发生。
- 到达流中的正确位置后,您可以分别使用 >> 和 << 运算符执行输入和输出任务。
功能表
以下是stream.h头文件中提供的函数:
增益级 | 功能 |
---|---|
文件缓冲区 | 它将文件缓冲区设置为读/写。它包含 close() 和 open() 函数 |
流库 | 它是 ifstream、fstream 和 ofstream 类的基类。其操作与文件流相同。 |
流式传输 | 它是一个用于提供输入操作的输入文件流类。 |
流外 | 它是一个输出文件流类,用于提供输出操作。 |
流 | 它是一个输入/输出流类。它支持同时进行输入/输出操作。 |
C++ 输入/输出的头文件
C++ 提供了三个带有执行基本输入/输出任务函数的库。它们包括:
- IO流: 它是标准输入/输出流的缩写。此头文件附带了 cin/cout/cerr 等对象的定义。
- 约曼尼普: 它是输入/输出操纵器的缩写。该库附带可用于操纵流的函数。它包含 setw、setprecision 等对象的定义。
- 流: 这是描述文件流的头文件。它处理从文件读取的数据作为输入或写入文件的数据作为输出。
cin 和 cout 关键字在 C++。它们分别用于获取输入和打印输出。要使用它们,您必须在程序中包含 iostream 头文件。原因是它们是在该头文件中定义的。未包含 iostream 头文件将生成错误。这是由于 C++ 编译器理解关键字的含义。
iostream 头文件中定义的主要对象是 cin、cout、cerr 和 clog。让我们讨论一下它们。
标准::cout
cout 对象是 iostream 类的一个实例。它用于在标准输出设备(通常是屏幕)上生成输出。它与流插入运算符 (<<) 一起使用。
例如:
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
输出:
以下是代码截图:
代码说明:
- 包含定义 cout 对象的 iostream 头文件。
- 包含 std 命名空间,以便我们在使用它的类时不必调用它。
- 调用 main() 函数。程序代码应添加在其主体内。左花括号 { 标记其主体的开始。
- 创建一个名为 welcome 的字符变量来保存字符串 Welcome to Guru99。
- 在控制台上打印字符串 welcome 的值。endl 是 C++ 关键字,表示结束行。它将光标移动到下一行开始打印文本。
- 程序执行成功后必须返回值。
- 函数 main() 主体结束。
std::cin
cin 对象是 istream 类的一个实例。它从输入设备(键盘)读取输入。它通常与提取运算符 (>>) 一起使用。提取对象负责从 cin 对象中提取通过键盘输入的数据。
例如:
以下示例演示了如何在 C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
输出:
以下是代码截图:
代码说明:
- 将 iostream 头文件包含到我们的程序中。cin 对象在此头文件中定义。
- 包含 std 命名空间以使用其类。使用其类时无需调用 std。
- 调用main()函数。程序代码应添加到其主体内。
- 程序主体的开始。
- 声明 整型变量 命名的数字。
- 在屏幕上打印一条消息,提示用户输入一个数字。
- 从键盘读取用户在控制台上输入的值。
- 将上面读取的值与其他文本一起打印在控制台上。
- 如果程序执行成功,它应该返回一个值。
- 主函数主体结束。
std::cerr
cerr 对象构成标准错误流,用于输出 C++。cerr 是 ostream 类的一个实例。cerr 对象是非缓冲的。这意味着它用于需要立即显示错误消息的情况。
由于它是非缓冲的,因此它不会存储错误消息以供稍后显示。它与流插入运算符 (<<) 一起使用。
例如:
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
输出:
以下是代码截图:
代码说明:
- 包含已定义 cerr 对象的 iostream 头文件。
- 包含 std 命名空间,以便我们在使用它的类时不必调用它。
- 调用 main() 函数。程序逻辑应添加在其主体内。左花括号标记函数主体的开始。
- 使用 cerr 对象在控制台上打印错误。
- 程序执行成功后必须返回一个值。
- 主函数主体结束。
性病::堵塞
clog 对象是 ostream 类的一个实例。它用于在标准显示器(监视器)上显示错误。它类似于 cerr 对象,但它是缓冲的。由于它是缓冲的,因此它将错误消息存储在缓冲区中,直到缓冲区被填满/刷新。它与流插入运算符 (<<) 一起使用。
例如:
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
输出:
以下是代码截图:
代码说明:
- 包括定义clog对象的iostream头文件。
- 包括 std 命名空间,以便我们可以使用它的类而无需调用它。
- 调用 main() 函数。程序逻辑应添加在其主体内。{ 标记函数主体的开始。
- 使用 clog 对象在标准输出(即监视器)上打印错误。
- 程序成功完成后必须返回一个值。
- 函数main()函数体的结束。
使用 IO 流进行错误处理
要检查流是否有效,可以将其用作布尔值。
这是一个例子:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
要获取有关流状态的更多详细信息,您可以使用以下函数:
- good()-如果一切正常将返回 true。
- bad()-如果发生致命错误将返回 true。
- fail()-流操作失败后将返回 true。
- eof()-如果到达文件末尾将返回 true。
要了解特定的读/写操作是否失败,请测试读取结果。
例如,要检查用户是否输入了有效的整数,请执行以下操作:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }
结语
- 输入和输出任务 C++ 通过字节序列进行。字节被称为流。
- 在输入流中,字节从输入设备(如键盘)流向主存储器。
- 在输出流中,来自主内存的字节然后传输到显示器等输出设备。
- cin 对象是 istream 类的一个实例。它从键盘等输入设备读取输入。
- cout 对象是 ostream 类的一个实例。它在显示器等输出设备上产生输出。
- cerr 对象是 ostream 类的一个实例。它在监视器上显示错误对象。
- clog 对象是 ostream 类的实例。它在输出设备上显示错误消息。
- clog 对象缓冲错误消息,而 cerr 对象则不缓冲。