Podejsć inaczej do problemu. Nie wczytuj całego zdania od użytkownika. Wczytaj jedno słowo i dodaj do stringa, wczytaj kolejne słowo i znowu przypisz do stringa itd, aż wczytasz całe zdanie. W ten sposób nie musisz pobierać całej linijki, a tlyko zamiast tego za pomocą cout po jednym wyrazie i je łączyć. Spacja jest też brana jako "rozrusznik" pipa, który odpowiada za pobieranie z konsoli.