Действительно, вызов c_str()
действует для временного (string
) объекта, и указатель будет недействительным, когда вы его перехватите.
Не только это, но так как stringstream
и string
может сделать распределение, вам нужно убедиться, что вы не выбрасываете из-за проблем с кучей.Если вы находитесь в этой точке из-за нехватки памяти, вы можете взорвать еще хуже, пытаясь создать свое исключение.Как правило, вы хотите избежать выделения кучи в исключительных случаях.
Вы не можете использовать, скажем, runtime_error
или создать свой собственный тип исключения?