我有个问题。我有很多以这种方式使用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,这样我就不需要修改所有这些类了?
发布于 2012-06-07 10:04:28
没有一种简单的方法可以做到这一点。无论如何,您都不能使用fstream。但是,您可以通过简单地编写一个从PhysFS中提取数据的std::streambuf-derived类来继续使用streams。这不是一件微不足道的事情,因为streambuf有各种各样的复杂性。但这肯定是可行的。
您可以采用任何istream-derived类,并将不同的streambuf放入其中。
发布于 2012-06-07 06:14:05
PhysFS是一个C库,没有C++类型的概念。如果希望将C++句柄作为流对象处理,则需要找到PhysFS包装器或编写自己的包装器。
https://stackoverflow.com/questions/10922814
复制相似问题