Page principale | Hiérarchie des classes | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier

String.cpp

Aller à la documentation de ce fichier.
00001 /*! \file String.cpp
00002     \brief Chaine de carractère.
00003 
00004     Manipulation de chaine de carractère.
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    1.0
00008     \date       19/11/2007
00009 */
00010 
00011 #include    "String.h"
00012 
00013 String::String()
00014 {
00015     Size    = 0;
00016     Data    = NULL;
00017 }
00018 
00019 String::~String()
00020 {
00021     if(Data)
00022         delete Data;
00023 }
00024 
00025 int     String::size()
00026 {
00027     return Size;
00028 }
00029 
00030 String  String::operator+(const String a)
00031 {
00032     String  out;
00033     char    *Temp;
00034 
00035     out.Size = Size + a.Size;
00036 
00037     Temp = new char[out.Size + 1];
00038     strncpy(Temp, Data, Size);
00039     strncat(Temp, a.Data, a.Size);
00040 
00041     out.Data = Temp;
00042 
00043     return out;
00044 }
00045 
00046 String  String::operator+(const char *a)
00047 {
00048     String  out;
00049     char    *Temp;
00050 
00051     out.Size = Size + strlen(a);
00052 
00053     Temp = new char[out.Size + 1];
00054     strncpy(Temp, Data, Size);
00055     strncat(Temp, a, strlen(a));
00056 
00057     out.Data = Temp;
00058 
00059     return out;
00060 }
00061 
00062 String  String::operator+(const char a)
00063 {
00064     String  out;
00065     char    *Temp;
00066 
00067     out.Size = Size + 1;
00068 
00069     Temp = new char[out.Size + 1];
00070     strncpy(Temp, Data, Size);
00071     Temp[Size] = a;
00072     Temp[out.Size] = '\0';
00073 
00074     out.Data = Temp;
00075 
00076     return out;
00077 }
00078 
00079 void    String::operator=(const String a)
00080 {
00081     Size = a.Size;
00082     delete Data;
00083     Data = new char[Size + 1];
00084     strncpy(Data, a.Data, Size);
00085 }
00086 
00087 void    String::operator=(const char *a)
00088 {
00089     Size = strlen(a);
00090     delete Data;
00091     Data = new char[Size + 1];
00092     strncpy(Data, a, Size);
00093 }
00094 
00095 void    String::operator+=(const String a)
00096 {
00097     Size += a.Size;
00098     Data = (char *)realloc(Data, sizeof(char) * (Size + 1));
00099     strncat(Data, a.Data, a.Size);
00100 }
00101 
00102 void    String::operator+=(const char *a)
00103 {
00104     Size += strlen(a);
00105     Data = (char *)realloc(Data, sizeof(char) * (Size + 1));
00106     strncat(Data, a, strlen(a));
00107 }
00108 
00109 void    String::operator+=(const char a)
00110 {
00111     Size += 1;
00112     Data = (char *)realloc(Data, sizeof(char) * (Size + 1));
00113     Data[Size - 1] = a;
00114     Data[Size] = '\0';
00115 }
00116 
00117 bool    String::operator==(const String a)
00118 {
00119     if((!strcmp(Data, a.Data)) && (Size == a.Size))
00120         return 1;
00121 
00122     return 0;
00123 }
00124 
00125 bool    String::operator==(const char *a)
00126 {
00127     if(!strcmp(Data, a))
00128         return 1;
00129 
00130     return 0;
00131 }
00132 
00133 bool    String::operator!=(const String a)
00134 {
00135     if(strcmp(Data, a.Data))
00136         return 1;
00137 
00138     return 0;
00139 }
00140 
00141 bool    String::operator!=(const char *a)
00142 {
00143     if(strcmp(Data, a))
00144         return 1;
00145 
00146     return 0;
00147 }
00148 

Généré le Thu Jan 24 12:36:04 2008 pour A.I.F. par  doxygen 1.3.9.1