PhysFS可以使用ifstreams吗?

时间:2012-06-06 21:50:20

标签: c++ physfs

我有问题。我有很多代码以这种方式使用ifstream:

例如:

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应用于ifstreams,这样我就不需要修改所有这些类了?

2 个答案:

答案 0 :(得分:2)

没有简单的方法。无论如何,你将不得不使用fstreams。但是,您可以通过简单地编写一个从PhysFS中提取数据的std::streambuf派生类来继续使用流。这不是一件小事,因为streambuf具有各种复杂性。但它肯定是可行的。

您可以使用任何istream派生类,并将不同的streambuf推入其中。

答案 1 :(得分:0)

PhysFS是一个C库,没有C ++类型的概念。如果要将PhysFS句柄视为流对象,您将需要找到C ++包装器或编写自己的包装器。