以下代码在使用 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();
使用代码块时会创建并写入文件,但使用 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();
关于c++ - Visual Studio 中的 fstream 指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35894892/