我有问题。我有很多代码以这种方式使用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,这样我就不需要修改所有这些类了?
答案 0 :(得分:2)
没有简单的方法。无论如何,你将不得不使用fstreams。但是,您可以通过简单地编写一个从PhysFS中提取数据的std::streambuf
派生类来继续使用流。这不是一件小事,因为streambuf
具有各种复杂性。但它肯定是可行的。
您可以使用任何istream
派生类,并将不同的streambuf
推入其中。
答案 1 :(得分:0)
PhysFS是一个C库,没有C ++类型的概念。如果要将PhysFS句柄视为流对象,您将需要找到C ++包装器或编写自己的包装器。