943,899 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 444
  • C++ RSS
Aug 29th, 2008
0

I'm somehow messing up opening a file and making a c-style filename

Expand Post »
The following code is part of a program to document the book in my house, like those things they have at public libraries. I learned about minupulating files in programs last night and have many errors in this program.

First, the c-style string for filename comes out as - filename.txt" instead of without the quote

And even if you try running my program with a default filename like newbook it turns out to fail.


Book::Book(string Title,string AuthorLastName,string AuthorFirstName,string PublishingCompany,int SeriesNumber,int NumPages,int CopyrightYear,string Series):
m_Title(Title),
m_Series(Series),
m_AuthorFirstName(AuthorFirstName),
m_AuthorLastName(AuthorLastName),
m_PublishingCompany(PublishingCompany),
m_SeriesNumber(SeriesNumber),
m_NumPages(NumPages),
m_CopyrightYear(CopyrightYear)
{
fstream filehandle;
string filename=m_Title+".txt";

char m_filename[80];
for(int i=0;i<filename.size();++i)
{
        m_filename[i]=filename[i];
}
cout<<m_filename;
filehandle.open(m_filename);




if (!filehandle || !filehandle.good())
{
std::cout << "could not open file!\n";
}
filehandle << "out" << std::endl;
if (filehandle.fail())
{
std::cout << "failed to append to file!\n";
}

filehandle<<m_Title<<"\n";
filehandle<<m_AuthorFirstName<<" "<<m_AuthorLastName<<"\n";
filehandle<<"Published by "<<m_PublishingCompany<<" in "<<m_CopyrightYear<<"\n";
filehandle<<"No. "<<m_SeriesNumber<<" in the "<<m_Series<<" series\n";
filehandle<<m_NumPages<<" pages\n";      
                                                     
}
Reputation Points: 10
Solved Threads: 0
Newbie Poster
shipeshipaca is offline Offline
2 posts
since Aug 2008
Aug 29th, 2008
0

Re: I'm somehow messing up opening a file and making a c-style filename

simply use the 'c_str' function of the string class to convert to c-style string.
Featured Poster
Reputation Points: 431
Solved Threads: 116
Practically a Master Poster
Agni is offline Offline
654 posts
since Dec 2007
Aug 29th, 2008
0

Re: I'm somehow messing up opening a file and making a c-style filename

Please see my comments below
Book::Book(string Title,string AuthorLastName,string AuthorFirstName,string PublishingCompany,int SeriesNumber,int NumPages,int CopyrightYear,string Series):
m_Title(Title),
m_Series(Series),
m_AuthorFirstName(AuthorFirstName),
m_AuthorLastName(AuthorLastName),
m_PublishingCompany(PublishingCompany),
m_SeriesNumber(SeriesNumber),
m_NumPages(NumPages),
m_CopyrightYear(CopyrightYear)
{
fstream filehandle;
string filename=m_Title+".txt";

char m_filename[80];
for(int i=0;i<filename.size();++i)
{
        m_filename[i]=filename[i];
}
//the c-style string should end with a '\0', 
//so add line m_filename[i] = '\0'; 
//define i out of the for statement
cout<<m_filename;
filehandle.open(m_filename);

// the simplest way is to use filehandle.open(filename.c_str());
                                                     
}
Reputation Points: 14
Solved Threads: 6
Light Poster
littlestone is offline Offline
42 posts
since Mar 2008

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: Smart Pointers assignment
Next Thread in C++ Forum Timeline: Easter sunday problem





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC