visual studio 中的 fstream 指针问题

Issues with fstream pointer in visual studio

以下代码在使用 mingw 的代码块中运行良好,但在 visual studio 中失败。为什么?

fstream* __fstreamm = new fstream();
string _fileName="testing.log";
__fstreamm->open(_fileName.c_str(), std::fstream::in | std::fstream::out);
if(__fstreamm->fail())
{
    __fstreamm->open(_fileName.c_str(), std::fstream::trunc | std::fstream::out);
    __fstreamm->close();
    // re-open with original flags
    __fstreamm->open(_fileName.c_str(), std::fstream::in | std::fstream::out);
}
__fstreamm->seekp(0, ios::end);
*__fstreamm << "SSSSSSSSSTTTTTTTAAAAAAAAAARRRRRRRRRRRRTTTTTTTTTTT"<<std::endl;
__fstreamm->flush();

使用codeblocks时创建并写入文件,使用vs2008时创建文件但未写入。

我找到了解决方案。

fstream* __fstreamm = new fstream();
string _fileName="testing.log";
__fstreamm->open(_fileName.c_str(), std::fstream::in | std::fstream::out);
if(__fstreamm->fail())
{
    __fstreamm->open(_fileName.c_str(), std::fstream::trunc | std::fstream::out);
    __fstreamm->close();
    // re-open with original flags
    delete __fstreamm;
    __fstreamm = new fstream();
    __fstreamm->open(_fileName.c_str(), std::fstream::in | std::fstream::out);
}
__fstreamm->seekp(0, ios::end);
*__fstreamm << "SSSSSSSSSTTTTTTTAAAAAAAAAARRRRRRRRRRRRTTTTTTTTTTT"<<std::endl;
__fstreamm->flush();