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();
以下代码在使用 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();