If you want to use the form
get (char* s, streamsize n)
the get function tries to read n-1 characters from the stream and then appends a null-terminator. If you use n==1 then nothing can be read. If you want to use n==2 then you must provide space for the null-terminator, which you would do by:
char name[5][2];
Alternatively you could use the get function that reads a single character:
cin.get(dummy.name[i][1]);
In that case your out function would not work, because it also is written in a way so that it expects null-terminated strings. Instead of
cout << dummy.name[j] << " || ";
you need to do
cout << dummy.name[j][1] << " || ";
The reason is that dummy.name[j] specifies an object of type char[] (or char*) in which case the << operator expects a null-terminated c-string. dummy.name[j][1] however is a single character and the << operator knows how to deal with that and does not expect a null-terminator behind it.
Hope that helps.