c++ - Visual Studio 中的 fstream 指针问题

标签 c++ visual-studio-2008

以下代码在使用 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/

相关文章:

c++ - boost::threads - 如何正常关机?

C++ : operator new and default constructor

c++ - 跨文件共享静态变量 : namespace vs class

c# - 获取最新后目录不为空消息

visual-studio-2008 - 使用 TFS 自动结帐

visual-studio - 加载项如何检测解决方案何时加载?

visual-studio-2008 - ClearCase 与 Visual Studio 的集成

c++11 decltype(e) 是e命名的实体的类型

c++ - 动态内存和链表

asp.net - 如何更改 .ASPX 自动格式化设置 (Visual Studio)