Ответ 1
s.str("");
s.clear();
Для строки reset требуется первая строка, которая должна быть пустой; вторая строка требуется для очистки любых флагов ошибок, которые могут быть установлены. Если вы знаете, что флаги ошибок не установлены или вам не нужно их перезагружать, вам не нужно вызывать clear()
.
Обычно проще, чище и проще (прямолинейно?) просто использовать новый объект std::ostringstream
вместо повторного использования существующего, если только код не используется в известной точке производительности.