- C++ 基础
- C++ 首页
- C++ 概述
- C++ 环境设置
- C++ 基本语法
- C++ 注释
- C++ Hello World
- C++ 省略命名空间
- C++ 常量/字面量
- C++ 关键字
- C++ 标识符
- C++ 数据类型
- C++ 数值数据类型
- C++ 字符数据类型
- C++ 布尔数据类型
- C++ 变量类型
- C++ 变量作用域
- C++ 多个变量
- C++ 基础输入/输出
- C++ 修饰符类型
- C++ 存储类
- C++ 运算符
- C++ 数字
- C++ 枚举
- C++ 引用
- C++ 日期和时间
- C++ 控制语句
- C++ 决策
- C++ if 语句
- C++ if else 语句
- C++ 嵌套 if 语句
- C++ switch 语句
- C++ 嵌套 switch 语句
- C++ 循环类型
- C++ while 循环
- C++ for 循环
- C++ do while 循环
- C++ foreach 循环
- C++ 嵌套循环
- C++ break 语句
- C++ continue 语句
- C++ goto 语句
- C++ 构造函数
- C++ 构造函数和析构函数
- C++ 复制构造函数
- C++ 文件处理
- C++ 文件和流
- C++ 从文件中读取
C++ 基础输入/输出
C++ 标准库提供了广泛的输入/输出功能,我们将在后续章节中介绍。本章将讨论 C++ 编程所需的非常基本和最常见的 I/O 操作。
C++ I/O 发生在流中,流是字节序列。如果字节从键盘、磁盘驱动器或网络连接等设备流向主内存,则称为输入操作;如果字节从主内存流向显示屏、打印机、磁盘驱动器或网络连接等设备,则称为输出操作。
I/O 库头文件
以下是 C++ 程序中重要的头文件:
序号 | 头文件 & 函数和描述 |
---|---|
1 |
此文件定义了cin、cout、cerr和clog对象,它们分别对应于标准输入流、标准输出流、无缓冲的标准错误流和带缓冲的标准错误流。 |
2 |
此文件声明了用于使用所谓的参数化流操作符(例如setw和setprecision)执行格式化 I/O 的服务。 |
3 |
此文件声明了用于用户控制的文件处理的服务。我们将在文件和流相关的章节中详细讨论它。 |
4 |
<bits/stdc++.h> 此头文件包含大部分标准 C++ 库,无需单独指定每个库即可添加广泛的功能。这在编码竞赛中特别有用。 |
标准输出流 (cout)
预定义对象cout是ostream类的实例。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++ 编译器还会确定要输出的变量的数据类型,并选择合适的流插入运算符来显示该值。<< 运算符被重载以输出内置类型整数、浮点数、双精度数、字符串和指针值的数据项。
插入运算符<<可以如上所示在一个语句中使用多次,并且endl用于在行尾添加换行符。
标准输入流 (cin)
预定义对象cin是istream类的实例。cin 对象被称为连接到标准输入设备,通常是键盘。cin与流提取运算符一起使用,该运算符写为>>(两个大于号),如下例所示。
示例
#include <iostream> using namespace std; int main() { char name[50]; cout << "Please enter your name: "; cin >> name; cout << "Your name is: " << name << endl; }
编译并执行上述代码时,它将提示您输入姓名。您输入一个值,然后按 Enter 键查看以下结果:
Please enter your name: cplusplus Your name is: cplusplus
C++ 编译器还会确定输入值的类型,并选择合适的流提取运算符来提取该值并将其存储到给定的变量中。
流提取运算符>>可以在一个语句中使用多次。要请求多个数据,可以使用以下方法:
cin >> name >> age;
这将等同于以下两个语句:
cin >> name; cin >> age;
标准错误流 (cerr)
预定义对象cerr是ostream类的实例。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....
标准日志流 (clog)
预定义对象clog是ostream类的实例。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。
使用 bits/stdc++ 进行输入/输出
**bits/stdc++.h** 是 C++ 中的非标准头文件,因为它不属于官方 C++ 标准库。相反,它是一个 GCC 特定的头文件,包含 C++ 中的大部分标准库。您也可以在不使用其他库的情况下使用 bits/stdc++.h 进行输入和输出。
示例
#include <bits/stdc++.h> using namespace std; int main() { int number; string name; // #include <iostream> // #include <string> cout << "Welcome to TutorialsPoint!" << endl; // Input of user's name and number cout << "Please enter your name: "; cin >> name; cout << "Please enter a number: "; cin >> number; cout << "Hello," << name << " You entered " << number << endl; // Demonstrating some STL features // #include <vector> vector<int> numbers; cout << "Enter 4 numbers: "; for (int i = 0; i < 4; ++i) { int temp; cin >> temp; numbers.push_back(temp); } cout << "You entered the following numbers: "; for (int num : numbers) { cout << num << " "; } cout << endl; // Sort and display the numbers // #include <algorithm> sort(numbers.begin(), numbers.end()); cout << "Sorted numbers: "; for (int num : numbers) { cout << num << " "; } cout << endl; return 0; }
编译并执行上述代码时,将产生以下结果:
Welcome to TutorialsPoint! Please enter your name: Aman Please enter a number: 2006 Hello, Aman You 2006 Enter 4 numbers: 2 0 0 6 You entered the following numbers: 2 0 0 6 Sorted numbers: 0 0 2 6
因此,在这里,我们不使用这些多个头文件,例如:
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
我们简单地使用了<bits/stdc++.h>,因为它包含了输入/输出操作、字符串处理、动态数组和算法所需的所有必要的标准库,从而简化了您的代码,使其更简洁、更方便。它尤其用于竞争性编程。