Есть ли веская причина, почему:
std::string input; std::getline(std::cin, input);
вызов getline не ждет ввода данных пользователем? Состояние cin как-то испортилось?