diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h
index b0d391f0025acdda83e7ca3b40c04809e572c600..22bb4bf639a4074b716a4e4cb222bb4571d33ad1 100644
--- a/Source/cmStandardIncludes.h
+++ b/Source/cmStandardIncludes.h
@@ -173,6 +173,15 @@ private:
   cmStringStream(const cmStringStream&);
   void operator=(const cmStringStream&);
 };
+class cmInputStringStream: public std::istringstream
+{
+public:
+  cmInputStringStream() {}
+  cmInputStringStream(const char* c) : std::istringstream(c) {}
+private:
+  cmInputStringStream(const cmInputStringStream&);
+  void operator=(const cmInputStringStream&);
+};
 #else
 class cmStrStreamCleanup
 {
@@ -201,6 +210,16 @@ private:
   cmStringStream(const cmStringStream&);
   void operator=(const cmStringStream&);
 };
+class cmInputStringStream: public std::istrstream
+{
+public:
+  typedef std::istrstream Superclass;
+  cmInputStringStream(const char* c) : Superclass(c) {}
+private:
+  cmInputStringStream(const cmInputStringStream&);
+  void operator=(const cmInputStringStream&);
+};
 #endif
 
+
 #endif
diff --git a/Source/ctest.cxx b/Source/ctest.cxx
index 2e2626ab73927f10678fadc08c0b00d1b2a1e860..dfc18a1d14ce8c0aed2a4f248396be896ef6fc5b 100644
--- a/Source/ctest.cxx
+++ b/Source/ctest.cxx
@@ -18,8 +18,6 @@
 #include "cmRegularExpression.h"
 #include "cmSystemTools.h"
 
-#include <strstream>
-
 #include <stdio.h>
 #include <time.h>
 
@@ -477,7 +475,7 @@ int ctest::BuildDirectory()
   // 1 - error
   // > 1 - warning
   std::vector<int>         markedLines;
-  std::istrstream istr(coutput);
+  cmInputStringStream istr(coutput);
   while(istr)
     {
     char buffer[1024];