CIN << название << епсИ;
cout >> «меня зовут» << название << епсИ;
проблема
Когда ты сказал cin >> smth
хочешь получить именно что-то, не более того. Маркер конца строки не является его частью, поэтому он не потребляется. Если у вас не будет специального типа для строки, но в стандартной библиотеке такого нет.
Когда вы используете getline
Вы говорите, что хотите получить линию. Строка — это строка, которая заканчивается \n
окончание является его неотъемлемой частью.
Так что проблема в том, что std::cin
оставляет конец \n
символ в буфере.
пример
std::cin >> smth;
+---+---+---+---+---+----+
|'H'|'e'|'l'|'l'|'o'|'\n'| // In smth will be "Hello"+---+---+---+---+---+----+
+----+
|'\n'| // But new-line character stays in buffer
+----+
std::cin >> smth2; // Its same like you would press just an 'enter', so smth2 is empty
Решение
std::cin.getline
или же
std::cin >> smth;
+ std::cin.ignore();
Других решений пока нет …