C++ 基本的输入输出

C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。
C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。

在C++中,有一些专门用来处理输入输出的头文件,它们让我们能够与用户交互,或处理文件。以下是最常用的输入输出头文件以及它们的用途:


头文件及作用

  1. <iostream>
    提供 标准输入输出功能,例如用 cin 从键盘输入数据,cout 在屏幕输出数据。

  2. <iomanip>
    提供 格式化输出功能,比如设置小数点精度、对齐输出等操作,常用函数有 setwsetprecision

  3. <fstream>
    提供 文件读写功能,用于从文件中读取数据或向文件写入数据。


标准输出流(cout

  • cout 用来在屏幕输出内容,通常和 <<(流插入运算符)一起使用。

  • 示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    #include <iostream>
    using namespace std;

    int main() {
    char str[] = "Hello C++";
    cout << "输出内容是:" << str << endl;
    return 0;
    }

    运行结果:

    1
    输出内容是:Hello C++
  • 特点:

    • << 操作符会根据变量类型自动选择适合的输出格式。
    • endl 用于换行,相当于 \n,并且刷新输出缓冲区。

标准输入流(cin

  • cin 用来从键盘输入数据,通常和 >>(流提取运算符)一起使用。

  • 示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <iostream>
    using namespace std;

    int main() {
    char name[50];
    cout << "请输入您的名称: ";
    cin >> name;
    cout << "您的名称是:" << name << endl;
    return 0;
    }

    运行过程:

    1
    2
    请输入您的名称: cplusplus
    您的名称是: cplusplus
  • 特点:

    • >> 会根据变量的类型读取输入数据。
    • 如果需要输入多个数据,可以像这样使用:
      1
      cin >> name >> age;

标准错误流(cerr

  • cerr 用来输出错误消息,特点是 不经过缓冲,直接输出,适合需要立即显示的错误信息。
  • 示例代码:
    1
    2
    3
    4
    5
    6
    7
    8
    #include <iostream>
    using namespace std;

    int main() {
    char str[] = "Unable to read...";
    cerr << "错误信息:" << str << endl;
    return 0;
    }
    运行结果:
    1
    错误信息:Unable to read...

标准日志流(clog

  • clog 用来输出日志信息,和 cerr 不同的是,它是缓冲的,日志信息会先存入缓冲区,等缓冲区满了或刷新时才会输出。
  • 示例代码:
    1
    2
    3
    4
    5
    6
    7
    8
    #include <iostream>
    using namespace std;

    int main() {
    char str[] = "Unable to read...";
    clog << "日志信息:" << str << endl;
    return 0;
    }
    运行结果:
    1
    日志信息:Unable to read...

小总结

  1. cout: 用于正常输出,比如结果或普通信息。
  2. cin: 用于从键盘输入数据。
  3. cerr: 用于立即输出错误信息,适合显示错误日志。
  4. clog: 用于输出普通日志信息,会经过缓冲区,适合较少实时性的消息。

尽管在小程序中 coutcerrclog 的区别不明显,但在复杂系统中,合理区分这些流有助于调试和维护代码。