I'd think he's using the getchar to dispose of the \n that is left in the buffer after a std::cin call. Although, I think cin.get() is probably a better OO approach. But I'm not 100% sure.
But my main problem is not getchar(), I have problem with the output of the file on the console screen.
For example, I cin "ting" at
cout << "Enter name: ";
cin >> staffAdd[i].staff_name;
Oh yes your file does contain "ing".
Check it out.
getchar is eating the first character off the words when you input them, so you are only reading and storing "ing".
I might be reading this wrong (I'm tired, forgive me), but it looks as though you're discarding the first character of the staff file by calling staff.get() != '\0'). Staff.get() would get a character from the file, then you compare that character with the null character and then that character gets discarded.
I'm unsure what SGH was saying when he said,
Oh yes your file does contain "ing".
Check it out.
getchar is eating the first character off the words when you input them, so you are only reading and storing "ing".
As I don't see a getchar that is eating the first character of input anywhere. . .
EDIT: Try staff.peek() there. That looks at the character next in line but doesn't discard it.