Generalnie nie da się tego łatwo zrobić, bo przejście do nowej linii jest zupełnie niezależne od cin.
Konkretniej, jak naciśniesz enter to dzieją się dwie rzeczy:
1. Program od okna terminala/konsoli stwierdza, że tzw "echo" jest włączone, więc to co "wpisał" użytkownik musi zostać wyświetlone na ekranie konsoli. Użytkownik nacisnął enter, więc na ekranie konsoli należy przejść do nowej linii.
2. Program od okna terminala/konsoli wysyła na standardowe wejście Twojego programu znak nowej linii, a cin to odbiera. Ponieważ cin spodziewa się int'a, to ignoruje biały znak i czeka dalej.
Jeśli chcesz zrobić wczytywanie zmiennej, ale ograniczone tylko do niektórych znaków (np. żeby w ogóle nie dało się wpisać liter, ani przejść do nowej linii), to musiałbyś przekonfigurować konsolę tak, żeby wyłączyć echo (żeby nic co użytkownik naciśnie się nie pojawiało) – i pamiętać ją przekonfigurować z powrotem przy wyjściu z programu – oraz w zasadzie napisać własną funkcję/klasę, która w zasadzie będzie ekwiwalentem cin (no, technicznie można spróbować wpiąć się jako "filtr" w stos wejścia używany przez cin).
Da się to zrobić, ale:
- To jest trochę kodu zależnego od systemu (tj. pod Windowsem i pod Linuxem robi się to trochę inaczej).
- Potencjalnie komplikuje to działanie przekierowań (typu: "program < dane" czy "cat dane | program"), choć jest to też do ogarnięcia.
Więc szczerze, to bym odradzał, chyba, że jest to ta konkretna rzecz, której koniecznie chcesz się nauczyć – w takim wypadku daj znać pod jaki OS to piszesz, to Ci podrzucę po czym szukać więcej informacji.