Нет. Объем temp ограничен блоком, в котором он объявлен. Поскольку вы объявили его в стеке (вы не использовали ключевое слово new
), переменная temp будет уничтожена в момент выхода из функции. Единственный способ сохранить переменную - это скопировать значение temp в переменную вне функции. Например, это будет работать:
std::string returnstring(std::istringstream &ist)
{
std::string temp;
std::getline(ist,temp);
return temp;
}
Поскольку возвращаемое значение является копией, а не ссылкой, тогда вы можете выполнить std :: string return_string = returnstring (ist); И скопируйте значение temp во вновь объявленную переменную, которая может использоваться для вашей функции displaystring.
В общем, я бы избегал объявления переменных внутри функции, которые вам понадобятся вне области действия функции. Вместо этого возвращайтесь по значению всякий раз, когда вы возвращаете переменные, встроенные в функцию (однако, не рекомендуется для больших массивов и объектов).