I use string to read text: string name; cin >> name; reads characters until whitespace. If the user types Alice and presses Enter, name becomes "Alice". The extraction operator stops at the first space, tab, or newline.
If the user types Alice Smith, cin >> name only reads "Alice", leaving Smith in the buffer. To read multiple words separately, chain extractions: string first, last; cin >> first >> last; works if the user types Alice Smith.
But Alice Marie Smith leaves Smith in the buffer.