c++ - fstream 指针未指向

标签 c++ pointers fstream

我正在尝试创建一个指向 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/

相关文章:

c - 尝试打印指针值时出现堆异常

c++ - 在 C++ 中使用 fstream 读取和追加文件

c++ - C++ ifstream I/O?

c++ - 我在我的程序中使用 ffmpeg 库来录制视频和音频

c++ - 关于在c++中实现图形的问题

c - 对数组指针自增的疑问

c++ - 替代 std::istream::ignore

c++ - 伪随机数生成器的相同调用之间的不同行为

c++ - 我如何知道内联函数是否在被调用的地方被实际替换?

c - C语言中的结构体