Преглед на файлове

ENH: provide stringstream too. FIX: warning shadow var

Mathieu Malaterre преди 19 години
родител
ревизия
cc73abf7e7
променени са 2 файла, в които са добавени 43 реда и са изтрити 3 реда
  1. 14 2
      Source/kwsys/kwsys_ios_sstream.h.in
  2. 29 1
      Source/kwsys/testIOS.cxx

+ 14 - 2
Source/kwsys/kwsys_ios_sstream.h.in

@@ -64,6 +64,7 @@ using @KWSYS_NAMESPACE@_ios_namespace::ostream;
 using @KWSYS_NAMESPACE@_ios_namespace::istream;
 using @KWSYS_NAMESPACE@_ios_namespace::istrstream;
 using @KWSYS_NAMESPACE@_ios_namespace::ostrstream;
+using @KWSYS_NAMESPACE@_ios_namespace::strstream;
 using @KWSYS_NAMESPACE@_ios_namespace::ios;
 using @KWSYS_NAMESPACE@_ios_namespace::endl;
 using @KWSYS_NAMESPACE@_ios_namespace::ends;
@@ -91,9 +92,9 @@ public:
     {
     ostringstream_cleanup cleanup(*this);
     ostringstream_cleanup::IgnoreUnusedVariable(cleanup);
-    int pcount = this->pcount();
+    int count = this->pcount();
     const char* ptr = this->Superclass::str();
-    return kwsys_stl::string(ptr?ptr:"", pcount);
+    return kwsys_stl::string(ptr?ptr:"", count);
     }
   void str(const kwsys_stl::string& s)
     {
@@ -134,6 +135,17 @@ private:
 # pragma warning (pop)
 #endif
 
+class stringstream: public istringstream, public ostringstream
+{
+public:
+  stringstream():istringstream(),ostringstream() {}
+  kwsys_stl::string str() const { return istringstream::str(); }
+  kwsys_stl::string str() { return ostringstream::str(); }
+private:
+  stringstream(const stringstream&);
+  void operator=(const stringstream&);
+};
+
 } // namespace @KWSYS_NAMESPACE@_ios
 
 #endif

+ 29 - 1
Source/kwsys/testIOS.cxx

@@ -13,8 +13,36 @@
 
 int main()
 {
+  const char refstring[] =  "Hello, World!";
   kwsys_ios::ostringstream ostr;
-  ostr << "Hello, World!";
+  ostr << refstring;
   kwsys_ios::cout << ostr.str() << kwsys_ios::endl;
+  if( ostr.str() != refstring )
+    {
+    return 1;
+    }
+
+
+  kwsys_ios::istringstream istr;
+  istr.str( refstring );
+  kwsys_ios::cout << istr.str() << kwsys_ios::endl;
+  if( istr.str() != refstring )
+    {
+    return 1;
+    }
+
+
+  const int val = 12345;
+  const char valstr[] = "12345";
+  kwsys_ios::stringstream sstr;
+  sstr << val;
+  int v = 0;
+  sstr >> v;
+  if(v != val || sstr.str() != valstr)
+    {
+    return 1;
+    }
+  kwsys_ios::cout << sstr.str() << kwsys_ios::endl;
+
   return 0;
 }