Мацей Хель прав насчет почему вы получаете нежелательное поведение.
Чтобы получить желаемое поведение, вам нужно добавить сам символ, а не указатель на него. Вы правы, говоря (в своем комментарии к ответу Калима), что нет переопределения std::string::append
, которое занимает всего char
. Однако существует переопределение std::string::append(std::size_t, char)
, которое добавляет символ (второй аргумент) определенное количество раз (первый аргумент).
Итак, правильный способ написать то, что вы хотите, будет:
str.append(1, stck.top()); // Append one copy of the character at the top of the stack
Или, наоборот, просто используйте перегрузку для оператора +=
, который принимает char
:
str += stck.top();