1 #ifndef __CSTRING_HPP
2 #define __CSTRING_HPP
3 
4 #ifdef INCS_NEED_DOT_H
5 #include <string.h>
6 #include <iostream.h>
7 #else
8 #include <string>
9 #include <iostream>
10 #endif
11 
12 class CString
13 { protected: char *buffer;
14              size_t length;
15              size_t alloc_len;
16   public:    CString();
17              CString(const CString &);
18              CString(const char *);
19              ~CString();
20 
21              size_t Length() const;
22 
23              operator const char *() const;
24              operator const char *();
25              operator char*();
26              CString  substr(size_t,size_t) const;
27              CString& operator +=(const CString &);
28              CString& operator +=(const char&);
29              CString& operator =(const CString &);
30              char&   charAt(const size_t index) const;
31              char&   setCharAt(const size_t index, const char&);
32 //             char& operator[](const size_t index);
33 //             char& operator[](const size_t index) const;
34              int operator== (const CString &) const;
35              int operator== (const char *) const;
36              int operator== (char *) const;
37 
38 
39              friend CString operator + (const CString &, const CString &);
40              friend ostream& operator << (ostream&, const CString&);
41              friend istream& operator >> (istream&, CString&);
42 
43 };
44 
45 CString upcase(const CString& src);
46 
47 #define NULLSTRING CString((char *)NULL)
48 
49 #endif
50