Здесь:
while (cin >> character && character != '#')
Вы пропускаете все пробелы. Чтобы оператор >> не мог пропустить пробелы, вам нужно явно указать это с помощью модификатора noskipws.
while(std::cin >> std::noskipws >> character && character != '#')
В качестве альтернативы тот же эффект может быть достигнут с помощью get
while(std::cin.get(character) && character != '#')
Далее вы читаете больше символов вне условия цикла.
cin.get(character);
У вас уже есть значение в переменной 'персонаж'. Так что удалите оба из них. Следующая итерация цикла (в условии while) получит следующий символ (так как он выполняется до входа в цикл).
Тогда исправь тест, как указал Тим.
Затем вы можете добавить еще один тест для пробелов с помощью:
if (std::isspace(character)) // Note #include <cctype>
{ /* STUFF */ }