std :: cin читает только до первого пробела.Затем он не очищает буфер чтения.Итак, из-за вашего «while (true)», когда он попадает во второй std :: cin, он читает вторую часть вашего ввода, не ожидая нового ввода.Вместо этого вы должны попробовать std :: getline (stream & readingBuffer, std :: string & destination).Он будет читать всю строку примерно так:
getline(cin, input);
Только не используйте cin и getline одновременно, если только вы не используете cin.ignore (1) после использования cin, потому что cin оставляет символ '/н 'в потоке.Если вы используете getline сразу после этого в том же потоке, он остановится на этом '/ n', не читая то, что вы хотели прочитать.