我们可以在SDL2中使用std :: fstream而不是SDL_RWops吗?

时间:2016-01-01 05:45:36

标签: c++ fstream sdl-2

作为标题,SDL_RWops在处理I / O文件时是否优于std::fstream?我可以使用std::fstream,因为我对它更熟悉吗?

2 个答案:

答案 0 :(得分:3)

通过阅读他们的文档,您可以发现std::fstream是:

  

对文件进行操作的输入/输出流类。

另一方面,SDL_RWops更多:

  

SDL_RWops是对I / O的抽象。它提供了在流中读取,写入和搜索数据的接口,而调用者无需知道数据的来源。

     

例如,RWops可能由内存缓冲区或磁盘上的文件或与Web服务器的连接提供,而不会更改调用方消耗数据的方式。

相当强大的抽象。

那么,您可以使用std::fstream代替SDL_RWops来处理文件吗?当然,如果你感到更自信,那就去吧。后者对游戏中的任何类型的流都是有用的抽象,因此除了阅读文件之外,其优势还在于它。

答案 1 :(得分:2)

可以为许多类型的数据流实现

SDL_RWops。标准SDL提供SDL_RWFromFileSDL_RWFromMem,而physfs等其他库为许多支持的存档类型提供了RWops的实现。

RWops的主要优点是所有SDL系列库(SDL_image,SDL_mixer,...)都支持从RWops加载,因此您可以轻松提供自己的特定数据源(例如您的存档格式,甚至可能是网络源)给他们。除此之外,根据您的需要,它可能会或可能不会对您的代码有益。