By Samat Jain
July 7, 2005 - 4:43pm
So, I’m working on a project, and have some code like this:
string blah="somefile";
ofstream fp;
fp.open(blah);
And it doesn’t work. Apparently, what you need to do when using ofstream’s open method:
fp.open(blah.c_str());
Yes, it looks like what it is. Apparently g++’s iostreams library (gcc 3.2) does not support things that have been part of the C++ standard for years–like C++ STL strings… You have to convert back to a C string.
Last I checked this was 2005, not 1999. You’d have thought someone would have overloaded this by now… I’ve only checked this in g++; will check with Intel’s C++ compiler and Microsoft Visual Studio later, though I’m not sure whether to expect better. What didn’t help me to find this out, of course, is g++’s totally wonderful (sarcasm) compiler error messages…
Like this article? Please support my writing! Flattr my blog (see my thoughts on Flattr), tip me via PayPal, or send me an item from my Amazon wish list.
Want to see more of my writing? Subscribe to
Samat Says' RSS feed







Comments
Permalink Anonymous on February 14, 2007 - 9:08am wrote…
I’m an experienced developer…but REAL new to using C++ (As in about 3 days of self-immersion). I’m trying to write a simple utility before taking a more structured approach to learning the language…and was having this EXACT problem! Thank You, this is the roadblock I was having this morning…I can now open files I’ve READ from the direcotry. I can finally continue with my simple utility and feel I’ve accomplished SOMETHING useful!
Oh, as for compiler, I’m using Bloodshed’s Dev-C on Windows XP.
Mike Dziedzic
Permalink Anonymous on March 6, 2007 - 12:56pm wrote…
g++’s iostreams library follows the standard, which says ofstream does not have such an open() overload. Blame C++, not g++.
The C++ standard library was gathered together from several adhoc libs, like HP’s STL and somedude’s iostreams, and practically no integrating was done. This will be looked at in the next C++ standardization release, C++0x.