How to use a filename string with fstream? 
July 23rd, 2005, 05:52 AM
| | | |
I would like to be able to do something like this:
string sFileInfo = "MyFile.tmp";
fstream InfoFile;
InfoFile.open(sFileInfo, fstream::app);
// >> do some i/o operations <<
InfoFile.close();
return 0;
How do I convert the filename string to the const char * that fstream
wants? | 
July 23rd, 2005, 05:52 AM
| | | | re: How to use a filename string with fstream?
"DellBoy" <professorcad@hotmail.com> schreef in bericht
news:1117281610.334518.250070@o13g2000cwo.googlegr oups.com...[color=blue]
>I would like to be able to do something like this:
>
> string sFileInfo = "MyFile.tmp";
> fstream InfoFile;
> InfoFile.open(sFileInfo, fstream::app);
> // >> do some i/o operations <<
> InfoFile.close();
> return 0;
>
> How do I convert the filename string to the const char * that fstream
> wants?
>[/color]
use sFileInfo.c_str()
Johan | 
July 23rd, 2005, 05:52 AM
| | | | re: How to use a filename string with fstream?
sFileInfo.c_str()
DellBoy wrote:[color=blue]
> I would like to be able to do something like this:
>
> string sFileInfo = "MyFile.tmp";
> fstream InfoFile;
> InfoFile.open(sFileInfo, fstream::app);
> // >> do some i/o operations <<
> InfoFile.close();
> return 0;
>
> How do I convert the filename string to the const char * that fstream
> wants?
>[/color] | 
July 23rd, 2005, 05:52 AM
| | | | re: How to use a filename string with fstream?
The method c_str() does this for you.
Example:
[color=blue]
>string sFileInfo = "MyFile.tmp";
>fstream InfoFile;
>InfoFile.open(sFileInfo, fstream::app);[/color]
InfoFile.open(sFileInfo.c_str(), fstream::app);
would be the replacement of the previous line.
[color=blue]
>// >> do some i/o operations <<
>InfoFile.close();
>return 0;[/color]
This should do it.
Manfred | 
July 23rd, 2005, 05:53 AM
| | | | re: How to use a filename string with fstream?
"DellBoy" <professorcad@hotmail.com> wrote in message
news:1117281610.334518.250070@o13g2000cwo.googlegr oups.com...[color=blue]
> I would like to be able to do something like this:
>
> string sFileInfo = "MyFile.tmp";
> fstream InfoFile;
> InfoFile.open(sFileInfo, fstream::app);
> // >> do some i/o operations <<
> InfoFile.close();
> return 0;
>
> How do I convert the filename string to the const char * that fstream
> wants?
>[/color]
Google for a reference on the std::string class. You return a pointer to a
const char* with its c_str() member function. Thats just one of a long list
of interesting and handy functions.
// test.cpp
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string s_filename( "data.dat" );
std::ifstream ifs;
ifs.open( s_filename.c_str() );
if ( !ifs )
{
std::cout << "error while opening " << s_filename;
std::cout << std::endl;
return 0;
}
std::string s_buffer;
std::vector<std::string> vs;
while ( std::getline( ifs, s_buffer ) )
{
vs.push_back( s_buffer );
}
if ( !ifs.eof() ) // if reason of termination != eof
{
std::cout << "error while reading file.\n";
return 0;
}
// do something with the vector of strings
return 0;
} | 
July 23rd, 2005, 05:53 AM
| | | | re: How to use a filename string with fstream?
Thank you all for the help, and the effort put in to explain how the
solution would work with my code. Really excellent response. DellBoy |  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 225,689 network members.
|