ENH: provide stringstream too. FIX: warning shadow var

This commit is contained in:
Mathieu Malaterre 2006-12-13 08:52:35 -05:00
parent 7d1801beee
commit cc73abf7e7
2 changed files with 43 additions and 3 deletions

View File

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

View File

@ -13,8 +13,36 @@
int main() int main()
{ {
const char refstring[] = "Hello, World!";
kwsys_ios::ostringstream ostr; kwsys_ios::ostringstream ostr;
ostr << "Hello, World!"; ostr << refstring;
kwsys_ios::cout << ostr.str() << kwsys_ios::endl; 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; return 0;
} }