我正在尝试创建一个指向 fstream 的指针,以便我可以在我所有的类方法中使用它:
class P
{
private:
fstream *fs;
public:
P()
{
fstream fs(filepath, openmode);
this->fs = &fs;
}
};
但它似乎根本没有指向它,例如,如果我写:
fs->is_open()
它将返回 false,而如果我这样写:
fs.is_open()
它将返回 true。
这是什么原因造成的?我还尝试将指针更改为另一个指针,例如 fstr
,但这也没有用。
最佳答案
要完成您的要求,您需要使用 new
运算符,如下所示:
SmartIO::SmartIO(const char * filepath , Mode mode)
: fs(NULL), buffer(NULL), offset(0)
{
switch (mode)
{
case Mode::inText:
{
fs = new fstream(filepath,fstream::in|fstream::ate);
break;
}
case Mode::inBinary:
{
fs = new fstream(filepath,fstream::in|fstream::binary|fstream::ate);
break;
}
}
if ((fs) && (fs->is_open()))
{
buffer = new std:vector<char>(fs->tellg(), 0);
fs->seekg(0, ios::beg);
fs->read(buffer->data(), buffer->size());
}
else
{
printf( "cant open the file!");
}
}
SmartIO::~SmartIO()
{
delete fs;
delete buffer;
}
关于c++ - fstream 指针未指向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959144/