return _stricmp(psz1, psz2);
#elif defined(__BORLANDC__)
return stricmp(psz1, psz2);
-#elif defined(__UNIX__) || defined(__unix__) || defined(__GNUWIN32__)
+#elif defined(__UNIX__) || defined(__GNUWIN32__)
return strcasecmp(psz1, psz2);
#else
// almost all compilers/libraries provide this function (unfortunately under
size_t Len() const { return GetStringData()->nDataLength; }
/// string contains any characters?
bool IsEmpty() const { return Len() == 0; }
- /// reinitialize string (and free data!)
+ /// empty string contents
void Empty()
{
- if ( GetStringData()->nDataLength != 0 )
+ if ( !IsEmpty() )
Reinit();
+ // should be empty
wxASSERT( GetStringData()->nDataLength == 0 );
- wxASSERT( GetStringData()->nAllocLength == 0 );
+ }
+ /// empty the string and free memory
+ void Clear()
+ {
+ if ( !GetStringData()->IsEmpty() )
+ Reinit();
+
+ wxASSERT( GetStringData()->nDataLength == 0 ); // should be empty
+ wxASSERT( GetStringData()->nAllocLength == 0 ); // and not own any memory
}
/// Is an ascii value
/** @name return resulting string */
//@{
///
- friend wxString operator+(const wxString& string1, const wxString& string2);
+ friend wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2);
///
- friend wxString operator+(const wxString& string, char ch);
+ friend wxString WXDLLEXPORT operator+(const wxString& string, char ch);
///
- friend wxString operator+(char ch, const wxString& string);
+ friend wxString WXDLLEXPORT operator+(char ch, const wxString& string);
///
- friend wxString operator+(const wxString& string, const char *psz);
+ friend wxString WXDLLEXPORT operator+(const wxString& string, const char *psz);
///
- friend wxString operator+(const char *psz, const wxString& string);
+ friend wxString WXDLLEXPORT operator+(const char *psz, const wxString& string);
//@}
//@}
+ /** @name stream-like functions */
+ //@{
+ /// insert an int into string
+ wxString& operator<<(int i);
+ /// insert a float into string
+ wxString& operator<<(float f);
+ /// insert a double into string
+ wxString& operator<<(double d);
+ //@}
+
/** @name string comparison */
//@{
/**
size_t find(char ch, size_t nStart = 0) const;
// wxWin compatibility
- inline bool Contains(const wxString& str) { return Find(str) != -1; }
+ inline bool Contains(const wxString& str) const { return Find(str) != -1; }
//@}
///
inline bool operator>=(const char * s1, const wxString& s2) { return s2.Cmp(s1) <= 0; }
//@}
+wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2);
+wxString WXDLLEXPORT operator+(const wxString& string, char ch);
+wxString WXDLLEXPORT operator+(char ch, const wxString& string);
+wxString WXDLLEXPORT operator+(const wxString& string, const char *psz);
+wxString WXDLLEXPORT operator+(const char *psz, const wxString& string);
// ---------------------------------------------------------------------------
/** @name Global functions complementing standard C string library
#ifdef STD_STRING_COMPATIBILITY
// fwd decl
-class WXDLLEXPORT istream;
+// Known not to work with wxUSE_IOSTREAMH set to 0, so
+// replacing with includes (on advice of ungod@pasdex.com.au)
+// class WXDLLEXPORT istream;
+#if wxUSE_IOSTREAMH
+// N.B. BC++ doesn't have istream.h, ostream.h
+#include <iostream.h>
+#else
+#include <istream>
+# ifdef _MSC_VER
+ using namespace std;
+# endif
+#endif
-istream& WXDLLEXPORT operator>>(istream& is, wxString& str);
+WXDLLEXPORT istream& operator>>(istream& is, wxString& str);
#endif //std::string compatibility