1

私は問題があります。私はこのようにifstreamsを使用するコードをたくさん持っています:

元:

bool AudioManager::_loadSounds( const std::string& path, const std::string& appendPath )
{
    //open the file
    std::ifstream ifs( path.c_str() );

    //ensure it is open
    if(!ifs.is_open())
    {
        return false;
    }

    std::string line;

    //read each sound
    while( getline( ifs, line ) )
    {

..。

問題は、PhysFSを使用するためにアプリケーション全体を変更する必要があることです。すべてのデータは、zipファイルに区分されることを除いて、同じディレクトリ構造のままになります。

PhysFSをifstreamに適用して、これらすべてのクラスを変更する必要がないようにする簡単な方法はありますか?

4

2 に答える 2

2

それを行う簡単な方法はありません。何があっても、fstreamを使用する必要はありません。std::streambufただし、 PhysFSからデータをプルする派生クラスを作成するだけで、引き続きストリームを使用できます。streambufさまざまな複雑さが伴うため、これは簡単なことではありません。しかし、それは確かに実行可能です。

任意のistream派生クラスを取得して、別のクラスstreambufをそれに押し込むことができます。

于 2012-06-07T02:04:27.597 に答える
0

PhysFSはCライブラリであり、C++タイプの概念はありません。PhysFSハンドルをストリームオブジェクトとして扱いたい場合は、C ++ラッパーを見つけるか、独自のラッパーを作成する必要があります。

于 2012-06-06T22:14:04.523 に答える