【问题标题】:Can we use std::fstream instead of SDL_RWops in SDL2?我们可以在 SDL2 中使用 std::fstream 代替 SDL_RWops 吗?
【发布时间】:2016-01-01 05:45:36
【问题描述】:

如题,SDL_RWops在处理I/O文件方面是否比std::fstream有优势?我可以改用std::fstream,因为我更熟悉它吗?

【问题讨论】:

    标签: c++ fstream sdl-2


    【解决方案1】:

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

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

    另一方面,SDL_RWops 更多:

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

    例如,RWops 可能由内存缓冲区、磁盘上的文件或与 Web 服务器的连接提供,而无需对调用方使用数据的方式进行任何更改。

    相当强大的抽象。

    那么,您可以在文件中使用std::fstream 代替SDL_RWops 吗?当然,如果你觉得更有信心,那就去吧。后者是对游戏中任何类型流的有用抽象,因此其优势不仅仅是读取文件。

    【讨论】:

    • 重要提示:SDL_RWops 在 android 上使用 JNI 从 APK 读取文件。 std::fstream不要。
    【解决方案2】:

    SDL_RWops 可用于多种类型的数据流。标准 SDL 提供 SDL_RWFromFileSDL_RWFromMem,而其他库(如 physfs)为其许多受支持的存档类型提供 RWops 实现。

    RWops 的主要好处是所有 SDL 系列库(SDL_image、SDL_mixer、...)都支持从 RWops 加载,因此您可以轻松提供自己的特定数据源(例如,您的存档格式,甚至可能是网络源)给他们。除此之外,它可能对您的代码有利也可能不利,具体取决于您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2021-05-17
      • 2021-04-27
      • 2021-08-25
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多