Helpwith writing data to file

Hello Experts,

what exactly does this line of code do;

dataIn.write((char*) (&person),sizeof (person));

I got a code form PSC, and I need to understand exactly what this line of code is doing to be able to work it into my program.
Thing is I hardly know anything about c++ at the moment,and I have been kind of thrown off the deep end with a program am creating, anyway...

This code, I got from PSC, the details written to the file is name, address and telephone number, all are char data types.

I need to incorporate an account number (int datatype) for the program i am working on, but don't know how to make the above line of code write the account number in the file as well.

I am generating the account number in code and placing this in a variable. so How would I make the contents of the account number variable write to the file.

Who is Participating?
Add the line "char accountnumber[20];" to the class definition for "Contact".

Add right after the get name of contact person:
               cout << "\n Enter account number of contact person : ";
               cin.getline(accountnumber , 1000,'\n');
.. but it looks like you're rather low on the C++ familiarity, maybe you should go back and read the textbook?

It looks like there is a struct variable named "person", and that statement writes the structure to the file.

If you want to add an account number, just add "int accountnumber;" to the structure definition.  Then it will get written to the file.

Jaime OlivaresSoftware ArchitectCommented:
I guess 'person' is a structure instance.
write() writes a string of chars to a file, but as person is not a string of chars, you have to "cast" to make write works. Sizeof is a compiler-time function that returns the sizeof any data type, in this case, the size of person structure.  
Notice the ampersand (&) before person, it will give you a "pointer" (memory address) to structure. But as write requires a pointer to a char array, it has been casted to (char *), that is: convert person pointer to char pointer.
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Jaime OlivaresSoftware ArchitectCommented:
Maybe you can post the person structure definition.
claracruzAuthor Commented:
I don't really understand any of the above, but here is the code the rest of the code:

| users data entry here |
void inputData(void)
      Contact person;
      char continueAdding='Y';
      ofstream dataIn("addressBook.dat",ios::ate);//create binary file
            cout << "New contact person entry";
            cout << "\n------------------------\n";

            dataIn.write((char*) (&person),sizeof (person));
            cout << "\nDo you want to add another person? [Y/N] :";
            cin >>continueAdding;
            continueAdding = toupper(continueAdding);
      }while (continueAdding!='N');
      dataIn.close();//close file stream

some code from contact.h file;

class Contact {
      char name[25];
      char address[50];
      char telephone[15];
      /*the below method is private and used only from within this
       class and transparent to oustide function*/
      bool stringCheck(char*,int);


      void add(int);
      bool compare(char*);
      void display();
      char* returnName();


void Contact::add(int flag)
      while (!cin.get()) {};

      if (flag==1)
                  cout << "\n Enter name of contact person : ";
            }while (!stringCheck(name,1));

char* Customer::returnName(void)
      return name;

How and where do I get account number into the scheme of things.
Please explain with as little technical speak as possible.

All the data input function is done from contact.h file.
claracruzAuthor Commented:
Was afraid you were goin to mention the text book thing.... wouldn't be asking if I understood the greek in the textbook. but thanks anyway.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.