Since no one has given you any help so far I will try, although I am a little confused because in your post you mentioned saving/loading data to/from file yet in the code you posted you made absolutely no input/output function calls.
I'll assume that you have that code somewhere else (but that you have written it), and that you are only having trouble getting the data to/from the file. The problem you are having is that you are using a space to separate the different pieces of information within the file and then confused why the computer doesn't realize that a name in the format 'Bilbo Baggins' is all one chunk of data and not two? You should use some other delimiting character to separate the data.
Code:
e.g. Commas, full-stops (or periods if you are American), ;, :, <, >, ^, %, &, *, (, ), #, @, $, !, [, ], {, }, \, /, ?
All of those characters could be used to separate the different data chunks.
The other way of doing it (if saving and loading the data in binary format) is to extract and save a specific number of bytes. The problem with that is that it would impose a limit to the length of each data chunk you are saving/loading so exceptionally long name may cause problems. Obviously if you were going to do it that way you would have to either include the length of the name in the file (so that you can then extract that much info) or you don't bother storing the length of the data field and just pad the data with random crap to make up the byte length you are extracting. Either way, if you are going to save/load to/from file then you will need to specify a protocol for that (i.e. a file specification).
For more information about extraction of data from files research the fstream methods 'getline()' and the C function 'strtok()'. There are probably C++ equivalents of 'strtok()', but I can't think of any off the top of my head.