#include "String++.h"
#include <string.h>
#include <ctype.h>
-#include "concat.h"
#include "io_stream.h"
+#include <iostream>
+#include <sstream>
+#include <string>
+
+using namespace std;
// _data
delete theData;
}
+String::String (int const anInt)
+{
+ ostringstream os;
+ os << anInt;
+ theData = new _data(os.str().size());
+ memcpy (theData->theString, os.str().c_str(), os.str().size());
+}
+
+String::String (string const &aString) : theData (new _data (aString.c_str() ? strlen (aString.c_str()) : 0))
+{
+ memcpy (theData->theString, aString.c_str(), theData->length);
+}
+
// able to cache the result if needed.
char *
String::cstr ()
return 0;
}
+String
+String::substr(size_t start, size_t len) const
+{
+ // Adapt the C++ string class
+ return string(cstr_oneuse()).substr(start, len);
+}
+
int
String::compare (String const &aString, size_t const count) const
{
{
return lhs.casecompare (rhs);
}
+
+/* TODO: research how wide char and unicode interoperate with
+ * C++ streams
+ */
+ostream &
+operator << (ostream &os, String const &theString)
+{
+ os << theString.cstr_oneuse();
+ return os;
+}