diff --git a/kwsys_ios_sstream.h.in b/kwsys_ios_sstream.h.in
index 5d1e93611aa1282e57b5eb798e14d28d29103ade..5e99c141e0983b8e8d686dd17a42f13f467d6795 100644
--- a/kwsys_ios_sstream.h.in
+++ b/kwsys_ios_sstream.h.in
@@ -95,14 +95,13 @@ class istringstream: private kwsys_stl::string, public istrstream
 public:
   typedef kwsys_stl::string StdString;
   typedef istrstream IStrStream;
-  istringstream(): StdString(), IStrStream(StdString::c_str()) {}
+  istringstream(): StdString(),
+                   IStrStream(const_cast<char*>(StdString::c_str())) {}
   istringstream(const kwsys_stl::string& s):
-    StdString(s), IStrStream(StdString::c_str()) {}
+    StdString(s), IStrStream(const_cast<char*>(StdString::c_str())) {}
   kwsys_stl::string str() const { return *this; }
   void str(const kwsys_stl::string& s)
     {
-    // Very dangerous.  If this throws, the object is hosed.  When the
-    // destructor is later called, the program is hosed too.
     this->~istringstream();
     new (this) istringstream(s);
     }