博客
关于我
cin/cout 输入流/输出流深度挖掘
阅读量:796 次
发布时间:2023-03-28

本文共 2252 字,大约阅读时间需要 7 分钟。

C++流类库基础入门

流类库是C++标准库中用于数据输入输出的核心组件,涵盖了标准I/O、文件I/O以及字符串I/O等功能。通过流类库,程序能够高效地与键盘、显示器以及文件进行数据交互。本文将从基础知识出发,逐步介绍流类库的使用方法。

流类库的三大头文件

C++流类库主要由三个头文件组成:

  • <iostream>

    包含标准输入输出流类:std::cin(键盘输入流)、std::cout(显示器输出流)、std::cerr(非缓冲错误输出流)和std::clog(缓冲错误输出流)。
    该头文件包含了基本的输入输出功能,适用于大多数C++程序。

  • <iomanip>

    包含格式化I/O的控制函数和宏,用于设置输出格式。
    例如,std::setw 用于控制字段宽度,std::setfill 用于设置填充字符。

  • <fstream>

    包含文件输入输出流类:std::ifstream(文件输入流)、std::ofstream(文件输出流)和std::fstream(双向文件流)。
    这些类允许程序与文件进行数据交换。

  • 流类库的继承关系

    C++流类库的核心是<iostream>,其派生出了三个关键类:

    • <iostream>:提供通用输入输出功能。
    • <fstream>:提供文件输入输出功能。
    • <sstream>:提供字符串输入输出功能。

    所有这些类均以<ios>类为基类,<ios>类定义了控制输出格式的成员变量和函数。例如,flags 函数用于设置输出格式标志,width 函数用于设置输出字段宽度。

    <ios>类的核心功能

    <ios>类是流类库的基类,主要功能包括:

  • 格式标志控制:通过flags 函数设置输出格式标志,如左对齐、右对齐、定点表示法等。
  • 缓冲区操作:通过fillflush 函数控制缓冲区的填充字符和刷新。
  • 精度控制:通过precision 函数设置浮点数的显示精度。
  • <ios>类还定义了多个常用操作符:

    • >>>):用于从输入流中读取数据。
    • <<<):用于将数据写入输出流。

    标准输入输出流

    <iostream> 提供了标准输入输出流对象 std::cinstd::cout

    • std::cin:代表标准输入流(键盘输入流),用于从键盘读取数据。

      使用方式:std::cin >> var;,其中 var 是程序中定义的变量。

    • std::cout:代表标准输出流(显示器输出流),用于向标准输出(显示器)写入数据。

      使用方式:std::cout << "Hello, World!" << std::endl;

    输入流操作

    输入流操作可以通过重载的 >> 运算符实现。输入流支持多种数据类型,例如:

    std::string name;std::cin >> name;

    需要注意的是,输入流会自动处理输入的空白字符(如空格、制表符、换行符等)。

    输出流操作

    输出流操作可以通过重载的 << 运算符实现。输出流支持多种数据类型的格式化输出。例如:

    std::cout << "商品名称: " << name << ", 价格: " << price << std::endl;

    输出流支持格式化操作符,例如:

    • std::setw(10):设置输出字段宽度。
    • std::setfill(' '):设置填充字符。

    文件输入输出流

    文件输入输出流允许程序与文件进行数据交互。<fstream> 类提供了三个关键类:

  • std::ifstream:文件输入流,用于从文件中读取数据。
  • std::ofstream:文件输出流,用于向文件中写入数据。
  • std::fstream:双向文件流,支持读写操作。
  • 文件打开与关闭

    文件流对象需要通过 open 函数打开文件,指定文件名和打开模式。例如:

    std::ofstream fout("file.txt", std::ios::out);std::ifstream fin("file.txt", std::ios::in);

    文件流操作需要在使用完毕后关闭,以释放文件资源:

    fout.close();fin.close();

    文件读写操作

    文件输入流支持从文件中读取数据,文件输出流支持将数据写入文件。例如:

    std::string name;double price;fin >> name >> price;fout << name << ", " << price << std::endl;

    文件流还支持随机访问,通过 seekgseekp 函数可以移动读写指针到指定位置。

    格式化输出

    C++流类库提供了强大的格式化输出功能,常见的格式化控制包括:

  • 字段宽度std::setwstd::setfill 用于控制输出字段的宽度和填充字符。
  • 定点与科学表示法std::fixedstd::scientific 用于控制浮点数的表示方式。
  • 小数精度std::precision 用于设置浮点数的小数精度。
  • 例如:

    std::cout << std::fixed << std::setprecision(2) << 123.456789 << std::endl;

    输出结果为:

    123.46

    总结

    流类库是C++程序员的重要工具,涵盖了标准输入输出、文件操作以及格式化输出等功能。通过合理使用流类库,开发人员可以实现对键盘、显示器和文件的高效数据交互。掌握流类库的使用方法,是C++程序开发的基础知识之一。

    转载地址:http://ybhfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现摄氏温度和华氏温度互转(附完整源码)
    查看>>
    Objective-C实现播放器(附完整源码)
    查看>>
    Objective-C实现操作MySQL(附完整源码)
    查看>>
    Objective-C实现操作注册表 (附完整源码)
    查看>>
    Objective-C实现改变图片亮度算法(附完整源码)
    查看>>
    Objective-C实现数字图像处理算法(附完整源码)
    查看>>
    Objective-C实现数组切片(附完整源码)
    查看>>
    Objective-C实现数组去重(附完整源码)
    查看>>
    Objective-C实现数组的循环左移(附完整源码)
    查看>>
    Objective-C实现数除以二divideByTwo算法(附完整源码)
    查看>>
    Objective-C实现文件分割(附完整源码)
    查看>>
    Objective-C实现文件拷贝(附完整源码)
    查看>>
    Objective-C实现文件的删除、复制与重命名操作实例(附完整源码)
    查看>>
    Objective-C实现无序表查找算法(附完整源码)
    查看>>
    Objective-C实现无锁链表(附完整源码)
    查看>>
    Objective-C实现无锁链表(附完整源码)
    查看>>
    Objective-C实现时间戳转为年月日时分秒(附完整源码)
    查看>>
    Objective-C实现是否为 Pythagoreantriplet 毕氏三元数组算法(附完整源码)
    查看>>
    Objective-C实现显示响应算法(附完整源码)
    查看>>
    Objective-C实现晚捆绑测试实例(附完整源码)
    查看>>