代码之家  ›  专栏  ›  技术社区  ›  Rick Jim DeLaHunt

什么是流的标记?为什么流中只有一个标记?

  •  0
  • Rick Jim DeLaHunt  · 技术社区  · 7 年前

    C++引物第五

    只有一个标记

    事实上,图书馆区分了 seek tell 函数可能具有误导性。尽管图书馆做出了这样的区分, 它在流中只维护一个标记没有不同的读标记和写标记

    当我们处理一个只输入或只输出的流时,区别甚至不明显。我们只能使用 g 或者只有 p tellp ifstream ,编译器会抱怨。同样,它也不会让我们打电话 seekg ostringstream .

    这个 fstream stringstream 类型可以读写同一个流。 在这些类型中,有一个保存要读写的数据的缓冲区和一个表示缓冲区中当前位置的标记。 图书馆绘制了 这个标记的位置。


    我所知道的所有关于流缓冲区是从这个页面 https://en.cppreference.com/w/cpp/io/basic_streambuf . 从文本和图表中,我知道流是一个包含数据的源,它最多可以有 2 缓冲区,由维护 指针。

    那么引用中提到的标记是什么 几乎

    1 回复  |  直到 7 年前
        1
  •  0
  •   skouliou    7 年前

    我不是专家,所以我只是根据自己的知识做了一个有根据的猜测:

    1. 所谓的 标记 是电流吗 抵消 从流的开始,所以第一个字节 offset = 0 .

    2. “puting”和“get”之间的区别允许用户实现自己的流类,这些流类使用不同的 g p ,因此,这种方法不依赖于单个标记进行读/写,因此提供了更大的灵活性,因为您不依赖于单个标记。