C++ 基本输入/输出:Cout、Cin、Cerr 示例
什么是 C++ 中的流?
C++ 为用户提供了许多可用于执行输入/输出任务的库。这些任务以字节序列的形式完成,通常称为流。
流分为两种:
流的类型
- 输入流: 这是一种流,其中字节从键盘等设备流向主存储器。
- 输出流: 这是一种流,其中字节以相反的方向流动,即从主内存到设备,如显示屏。
在本 C++ 教程中,您将学习:
- 什么是 C++ 中的流?
- 流的工作原理是什么?
- 功能表
- 用于输入/输出的 C++ 头文件
- std::cout
- std::cin
- std::cerr
- std::clog
- IO 流的错误处理:
流是如何工作的?
C++ 流的工作原理如下:
- 首先,使用正确的类型初始化流。
- 接下来,您应该使用 get/put 指针说明 I/O 将发生的位置。
- 在流中到达正确位置后,您可以分别使用>> 和 <<运算符执行输入和输出任务。
功能表
以下是stream.h头文件中提供的函数:
用于输入/输出的 C++ 头文件
C++ 提供了三个库,它们带有用于执行基本输入/输出任务的函数。它们包括:
- Iostream: 它是标准输入/输出流的缩写。这个头文件附带了像 cin/cout/cerr 这样的对象的定义。
- 伊曼尼普: 它是输入/输出操纵器的首字母缩写。该库带有可用于操作流的函数。它包含对 setw、setprecision 等对象的定义。
- 流媒体: 这是用于描述文件流的头文件。它处理从文件读取的数据作为输入或写入文件的数据,即输出。
cin 和 cout 关键字在 C++ 中非常流行。它们分别用于获取输入和打印输出。要使用它们,您必须在程序中包含 iostream 头文件。原因是它们是在该头文件中定义的。未能包含 iostream 头文件将产生错误。这是由于 C++ 编译器未能理解关键字的含义造成的。
iostream 头文件中定义的主要对象是cin、cout、cerr 和clog。让我们讨论一下。
std::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++ 中使用 cin 关键字:
#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() 函数。程序代码应添加到其主体中。
- 程序主体的开始。
- 声明一个名为 number 的整型变量。
- 在屏幕上打印一条消息,提示用户输入数字。
- 从键盘读取用户在控制台上输入的值。
- 将上面读取的值与其他文本一起打印在控制台上。
- 如果程序执行成功,它应该返回一个值。
- 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 对象在控制台上打印错误。
- 程序必须在成功执行后返回一个值。
- main函数体的结束。
std::阻塞
clog 对象是 ostream 类的一个实例。它用于在标准显示器、监视器上显示错误。它类似于 cerr 对象,但它是缓冲的。由于它是缓冲的,它将错误消息存储在缓冲区中,直到缓冲区被填充/刷新。它与流插入运算符 (<<) 一起使用。
示例:
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
输出:
下面是代码截图:
代码说明:
- 包括定义阻塞对象的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 对象不缓冲。
C语言