gpt4 book ai didi

c++ - embarcadero/borland TMemoryStream 和 TFileStream 的标准 C++ 等价物是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:34:20 27 4
gpt4 key购买 nike

我找到了遗留源代码和这里的摘录 -

TMemoryStream *DFile = new TMemoryStream;
TFileStream*BFile = new TFileStream;

以下是上述类的一些官方文档数据:


  • TMemoryStreamTFileStream 是否具有相同的用途?

  • 如果我们暂时考虑二进制数据输出流,那么我们可以吗?将 TMemoryStream & TFileStream 替换为 std::ostream &std::ofstream分别是?

  • (我有点困惑)什么时候使用编译器特定的 TMemoryStream & TFileStream 而不是 std::ostream & std::ofstream 分别是?

    • 如果我们执行以上操作,我们可以获得哪些优势?

最佳答案

Is TMemoryStream & TFileStream has same purpose ?

它们具有相似的界面,但用途不同。 TMemoryStream从/向内存块读取/写入数据。 TFileStream改为从文件读取数据/向文件写入数据。

If we consider binary data output streaming for awhile then can we replace TMemoryStream & TFileStream with std::ostream & std::ofstream respectively?

TFileStream写入文件。 std::ofstream写入文件。所以,你可以替换 TFileStreamstd::ofstream ,是的。

TMemoryStream有点棘手。 TMemoryStream写入根据需要动态(重新)分配的内存块。没有用于写入动态内存块的标准 C++ 流。除非你考虑 std::ostringstream ,这意味着输出字符串,而不是二进制数据。或者 std::vector<char> ,它是动态的,但没有流接口(interface)。

然而,std::ostream几乎可以与任何 std::streambuf 一起使用你想要的,并且有很多第 3 方自定义 std::streambuf可用于从(动态)内存读取/写入(动态)内存的实现。例如,this one写入 std::array<char, N> , 但您可以修改它以写入 std::vector<char>反而。或者找到适合您需要的另一个实现。或者自己编写。

When to use compiler specific TMemoryStream & TFileStream over std::ostream & std::ofstream respectively?

使用 TMemoryStream/TFileStream当您需要直接与 Borland/Embarcadero 的 RTL/VCL/FMX 框架交互时。否则您应该使用标准 C++ 类。

关于c++ - embarcadero/borland TMemoryStream 和 TFileStream 的标准 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49134621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com