By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,159 Members | 947 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,159 IT Pros & Developers. It's quick & easy.

Can Some One Help!!??

P: 21
My code is this:

struct Book
{
char title[MAXBOOKS];
};
int fillarray(...)
{
Book theBook;
ifstream infile("library.txt");
while(true)
{
for(int i = 0; i < MAXBOOKS; i++)
{
infile.getline(theBook.title[i],MAXLENGTH);
cout << theBook.title[i];
for(int j = 0; j < MAXKEYWORDS; j++)
{

}
}
}

But when i debug it I come up with this error:

c:\documents and settings\owner\my documents\visual studio 2005\projects\hw 4\hw 4.cpp(29) : error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_El em *,std::streamsize)' : cannot convert parameter 1 from 'char' to 'char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\Documents and Settings\Owner\My Documents\Visual Studio 2005\Projects\HW 4\Debug\BuildLog.htm"
HW 4 - 1 error(s), 0 warning(s)

CAN SOME ONE HELP ME!!!!!!??????
Sep 25 '06 #1
Share this Question
Share on Google+
9 Replies


P: 59
I think the problem there is that you cannot use arrays in get line...Sorry, i forgot to mention that.
just read the name of the book into a temporary string and then save it to your book struct. or you >> operator in while loop to read the file;

Expand|Select|Wrap|Line Numbers
  1. struct Book
  2. {
  3.     Title[MAXBOOKS];
  4. };
  5.  
  6. int main() 
  7. {
  8.     Book myBooks;
  9.     int i = 0;
  10.                 string sBook;
  11.     ifstream infile("library.txt");
  12.  
  13.                 // See if this works
  14.                 while (infile >> myBooks.Title[i])
  15.                     i++;
  16.  
  17.     //for (i=0;i<MAXBOOKS; i++) {
  18.                 //      infile.getline(sBook, MAXLENGTH);
  19.                 //                myBooks.Title[i] = sBook;
  20.                //}
  21.     return 0;
  22. }
  23.  
Sep 25 '06 #2

P: 21
jjh
I think the problem there is that you cannot use arrays in get line...Sorry, i forgot to mention that.
just read the name of the book into a temporary string and then save it to your book struct.
so instead of using a character I should use a string??
character is char
what is string in c++???
Sep 25 '06 #3

P: 59
just include a
#include <string>

in your class list.
you can use a character if you want to. It'll more logical because it would use less memory, but it's not like it's terribly necessary.
Sep 25 '06 #4

P: 59
hey but see if you can use this code instead of getline

// See if this works
while (infile >> myBooks.Title[i])
i++;

this should write directly into your array.
Sep 25 '06 #5

P: 21
jjh
just include a
#include <string>

in your class list.
you can use a character if you want to. It'll more logical because it would use less memory, but it's not like it's terribly necessary.
I put in the #include <string> and now if I put in:
string tempTitle;
I get an error stating that 'string is an undeclared identifier.
?????
Sep 25 '06 #6

P: 21
jjh
just include a
#include <string>

in your class list.
you can use a character if you want to. It'll more logical because it would use less memory, but it's not like it's terribly necessary.
if i put in #include <string> and then:
string tempTitle;
infile.getline(tempTitle,MAXLENGTH);
theBook.title[i] = tempTitle;
I get an error message stating:
error C2065: 'string' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'tempTitle'
error C2065: 'tempTitle' : undeclared identifier
Sep 25 '06 #7

P: 21
jjh
if i put in #include <string> and then:
string tempTitle;
infile.getline(tempTitle,MAXLENGTH);
theBook.title[i] = tempTitle;
I get an error message stating:
error C2065: 'string' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'tempTitle'
error C2065: 'tempTitle' : undeclared identifier
by using:
while (infile >> myBooks.Title[i])
that will only write in one letter at a time, and i am wanting to writ in a title such as "The principles of chem"
Sep 25 '06 #8

P: 59
if you're using strings then add:

using namespace std;

after you class includes.
Sep 25 '06 #9

P: 21
jjh
I think the problem there is that you cannot use arrays in get line...Sorry, i forgot to mention that.
just read the name of the book into a temporary string and then save it to your book struct.
If I use your sugestion of putting the infile in for a string and then assigning it into a char array doesn't work.

I get this error

c:\documents and settings\owner\my documents\visual studio 2005\projects\hw 4\hw 4.cpp(34) : error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_El em *,std::streamsize)' : cannot convert parameter 1 from 'std::string' to 'char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]

Can you think of something

this is what I have so far.

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::ifstream;
#define MAXBOOKS 9
#define MAXKEYWORDS 3
#define MAXLENGTH 50
struct Book
{
char title[MAXBOOKS];
char keyWord[MAXKEYWORDS][MAXLENGTH];
char position;
};
int fillArray()
{
char title;
char keyword1;
char keyword2;
char keyword3;
Book theBook;
ifstream infile("library.txt");
while(true)
{
for(int i = 0; i < MAXBOOKS; i++)
{
// infile >> theBook.title[i];

string tempTitle;
infile.getline(tempTitle,MAXLENGTH);
//strcpy(theBook.title[i], tempTitle);
cout << theBook.title[i];

for(int j = 0; j < MAXKEYWORDS; j++)
{

}
}
}
return 0;
}
Sep 25 '06 #10

Post your reply

Sign in to post your reply or Sign up for a free account.