# 输入输出

URL: https://caijiao.org/cpp/intro/io
Source: docs/cpp/intro/io.md
Description: 本节将介绍 C++ 中常用的输入输出操作，包括如何使用 'cin'、'cout' 进行数据的输入和输出。

C++ 提供了强大的输入输出功能，常用的有 `cin`（输入）和 `cout`（输出）。这些操作是通过标准库中的 `<iostream>` 头文件实现的。

## 输出：`std::cout`

`std::cout` 用于将数据输出到控制台。

```cpp
#include <iostream>

int main() {
    std::cout << "Hello, world!" << std::endl;
    return 0;
}
````

* `std::cout`：用于输出数据到标准输出设备（通常是屏幕）。
* `<<`：输出操作符，用于将数据传递给 `cout`。
* `std::endl`：输出换行符，并刷新输出缓冲区。

### 示例：输出多个数据

```cpp
#include <iostream>

int main() {
    int a = 5;
    double b = 3.14;
    std::cout << "整数: " << a << ", 浮动数: " << b << std::endl;
    return 0;
}
```

输出：

```
整数: 5, 浮动数: 3.14
```

## 输入：`std::cin`

`std::cin` 用于从控制台获取用户输入。

```cpp
#include <iostream>

int main() {
    int age;
    std::cout << "请输入年龄: ";
    std::cin >> age;
    std::cout << "你输入的年龄是: " << age << std::endl;
    return 0;
}
```

* `std::cin`：用于从标准输入设备（通常是键盘）读取数据。
* `>>`：输入操作符，用于从用户输入中读取数据。

### 示例：输入和输出多个数据

```cpp
#include <iostream>

int main() {
    int num1, num2;
    std::cout << "请输入两个整数: ";
    std::cin >> num1 >> num2;
    std::cout << "你输入的两个整数分别是: " << num1 << " 和 " << num2 << std::endl;
    return 0;
}
```

输出示例：

```
请输入两个整数: 10 20
你输入的两个整数分别是: 10 和 20
```

## 输入输出的格式化

### 控制输出精度

可以使用 `std::fixed` 和 `std::setprecision` 控制浮动数的输出格式：

```cpp
#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.14159;
    std::cout << "Pi (3位小数): " << std::fixed << std::setprecision(3) << pi << std::endl;
    return 0;
}
```

输出：

```
Pi (3位小数): 3.142
```

* `std::fixed`：强制以固定小数点方式输出浮动数。
* `std::setprecision(n)`：设置输出小数点后的位数。

## 输入输出的小贴士

* 使用 `std::getline()` 读取一行字符串：`std::getline(std::cin, str);`
* 为避免 `std::cin` 读取错误，需要检查输入的有效性（例如使用 `std::cin.fail()` 判断）。

## 小结

* `std::cout` 用于输出，`std::cin` 用于输入。
* 通过操作符 `<<` 和 `>>` 实现数据流操作。
* 可通过 `std::fixed` 和 `std::setprecision` 格式化输出。

掌握 C++ 的输入输出操作是与用户交互的重要部分，之后可以进一步了解文件输入输出操作。
