我找到了遗留源代码和这里的摘录 -
TMemoryStream *DFile = new TMemoryStream;
TFileStream*BFile = new TFileStream;
以下是上述类的一些官方文档数据:
TMemoryStream
和TFileStream
是否具有相同的用途?如果我们暂时考虑二进制数据输出流,那么我们可以吗? 将
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
withstd::ostream
&std::ofstream
respectively?
TFileStream
写入文件。 std::ofstream
写入文件。所以,你可以替换 TFileStream
与 std::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
overstd::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/