Re: ios::nocreate and VC++ 6.0 SP6 question
"Mike" <mikedavies621@yahoo.com> ha scritto nel messaggio
news:1191947138.765498.148000@d55g2000hsg.googlegroups.com...
cReadFile(std::string* fileName)
{
inputFile = new std::ifstream(fileName->c_str(), std::ios::in/* |
std::ios::nocreate*/);
ownFile = true;
};
My problem is that when I create the ifstream with a file name that
does not exist, the create succeeds and my inputFile is set to a
valid (ie non-NULL) pointer. I really need to detect when an input
file does not exist but the compiler complains that ios::nocreate does
not exist if I uncomment the remainder of the line.
Hi,
I think that ios::nocreate is non-standard (maybe this was available in some
pre-standard time-frame... but I believe it is *not* standard).
If you want to simulate ios::nocreate behaviour, you can develop code
something like this:
[Note that I don't like the use you do of pointers... I would prefer using
references instead for std::string paramter - we had a thread recently about
using references whenever possible, and pointers when you have no other
option.]
<code>
void ReadTheFile( const std::string & fileName )
{
// Try opening the file for *read only*
std::ifstream inputFile( fileName.c_str(), std::ios_base::in );
if ( ! inputFile )
{
// File does *not* exist.
...
...
return;
}
// File exists
...
...
}
</code>
Giovanni