fstream不指定std::ios::in和std::ios::out也能读写???
不指定std::ios::in和std::ios::out也能读写???
std::fstream LoadFile;
LoadFile.open ( "C:\\3V.txt", std::ios::binary | std::ios::_Nocreate );
template <typename CharT> FILE * _Xfiopen(const CharT *filename,
ios_base::openmode mode, int prot)
{
static const int valid[] =
{// valid combinations of open flags
ios_base::in,
ios_base::out,
ios_base::out
[解决办法]
ios_base::trunc,
ios_base::out
[解决办法]
ios_base::app,
ios_base::in
[解决办法]
ios_base::binary,
ios_base::out
[解决办法]
ios_base::binary,
ios_base::out
[解决办法]
ios_base::trunc
[解决办法]
ios_base::binary,
ios_base::out
[解决办法]
ios_base::app
[解决办法]
ios_base::binary,
ios_base::in
[解决办法]
ios_base::out,
ios_base::in
[解决办法]
ios_base::out
[解决办法]
ios_base::trunc,
ios_base::in
[解决办法]
ios_base::out
[解决办法]
ios_base::app,
ios_base::in
[解决办法]
ios_base::out
[解决办法]
ios_base::binary,
ios_base::in
[解决办法]
ios_base::out
[解决办法]
ios_base::trunc
[解决办法]
ios_base::binary,
ios_base::in
[解决办法]
ios_base::out
[解决办法]
ios_base::app
[解决办法]
ios_base::binary,
0};
FILE *fp = 0;
int n;
ios_base::openmode atendflag = mode & ios_base::ate;
ios_base::openmode norepflag = mode & ios_base::_Noreplace;
// ===========重点看这里===========
if (mode & ios_base::_Nocreate)
mode
[解决办法]
= ios_base::in;// file must exist
if (mode & ios_base::app)
mode
[解决办法]
= ios_base::out;// extension -- app implies out
mode &= ~(ios_base::ate
[解决办法]
ios_base::_Nocreate
[解决办法]
ios_base::_Noreplace);
for (n = 0; valid[n] != 0 && valid[n] != mode; ++n)
;// look for a valid mode
if (valid[n] == 0)
return (0);// no valid mode
else if (norepflag && (mode & (ios_base::out
[解决办法]
ios_base::app))
&& (fp = _Xfsopen(filename, 0, prot)) != 0)
{// file must not exist, close and fail
fclose(fp);
return (0);
}
else if (fp != 0 && fclose(fp) != 0)
return (0);// can't close after test open
else if ((fp = _Xfsopen(filename, n, prot)) == 0)
return (0);// open failed
if (!atendflag
[解决办法]
fseek(fp, 0, SEEK_END) == 0)
return (fp);// no need to seek to end, or seek succeeded
fclose(fp);// can't position at end
return (0);
}