diff --git a/kwsys_ios_sstream.h.in b/kwsys_ios_sstream.h.in
index 2fbab781edcd4908f8a39198c0cd16913230cb04..cbd299ba0d43a3802b5314dfad9e0c1c6db87c5a 100644
--- a/kwsys_ios_sstream.h.in
+++ b/kwsys_ios_sstream.h.in
@@ -83,6 +83,7 @@ class ostringstream: public ostrstream
 public:
   typedef ostrstream Superclass;
   ostringstream() {}
+  ostringstream(const kwsys_stl::string& s) { *this << s.c_str(); }
   kwsys_stl::string str()
     {
     ostringstream_cleanup cleanup(*this);
@@ -91,6 +92,11 @@ public:
     const char* ptr = this->Superclass::str();
     return kwsys_stl::string(ptr?ptr:"", pcount);
     }
+  void str(const kwsys_stl::string& s)
+    {
+    this->~ostringstream();
+    new (this) ostringstream(s);
+    }
 private:
   ostringstream(const ostringstream&);
   void operator=(const ostringstream&);