summaryrefslogtreecommitdiff
path: root/include/String.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/String.h')
-rw-r--r--include/String.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/include/String.h b/include/String.h
new file mode 100644
index 0000000..65bf0ac
--- /dev/null
+++ b/include/String.h
@@ -0,0 +1,89 @@
+#ifndef __STRING_H__
+#define __STRING_H__
+#ifdef __cplusplus
+
+#include <iostream.h>
+#include <string.h>
+#include "Exceptions.h"
+
+/*
+ * Cette classe permet de stocker des chaînes de caractères simplement.
+ * Elle est une base essentielle et permet d'effectuer énormément d'opérations:
+ * - set fonctionne comme sprintf, et réassigne la chaîne.
+ * - to_charp() transforme la chaîne en pointeur.
+ * - to_charp(from) extrait la chaîne depuis le caractère numéro from
+ * - to_charp(from, to) extrait la chaîne depuis le caractère numéro from
+ * jusqu'au caractère numéro to.
+ * ATTENTION: les fonctions to_charp renvoie un pointeur sur un tableau
+ * statique, et ce tableau sera modifié au prochain
+ * appel à to_charp ou a set.
+ * - to_int transforme la chaîne en int.
+ * - to_double transforme la chaîne en double
+ * - to_sqldate effectue la conversion suivante: DD/MM/YYYY ==> YYYYMMDD
+ * - to_sqltime effectue la conversion suivante: h:m ==> h * 60 + m
+ * - from_sqldate et from_sqltime effectue les conversions inverses.
+ * - datedif calcule la différence en jours entre deux dates. Si le résultat
+ * est négatif, alors une des deux dates étaient invalide.
+ * - is_date, is_number, is_float, is_time renvoient des booléens de test.
+ * - strlen renvoie la longueur de la chaine
+ * - strchr(c) renvoie la position du caractère c
+ * - strchr(c, p) recherche le caractère c à partir de la position p
+ * - strrchr(c) renvoie la position du caractère c, en recherchant depuis la droite.
+ * - strstr(s) renvoie la position de la chaine s
+ * NOTE: les fonctions de recherche renvoient un résultat négatif si pas trouvé.
+ * - strchrcnt(c) compte le nombre d'occurences du caractère c.
+ *
+ * Les opérateurs !=, ==, <=, >=, < et > permettent de comparer deux chaînes, en mode
+ * 'case sensitive'. L'operateur [] renvoie un caractère de la chaîne.
+ *
+ * Les opérateurs << et >> vers un ostream ou depuis un istream sont supportés.
+ */
+
+class String : public Base {
+ public:
+ String(const String &);
+ String(const char * = "");
+ String(char);
+ String(int);
+ String(double);
+ ~String();
+ char * set(char *, ...);
+ char * to_charp(size_t = 0, ssize_t = -1) const;
+ int to_int() const;
+ double to_double() const;
+ String to_sqldate() const;
+ String to_sqltime() const;
+ String from_sqldate() const;
+ String from_sqltime() const;
+ double datedif(const String &) const;
+ bool is_date() const;
+ bool is_number() const;
+ bool is_float() const;
+ bool is_time() const;
+ size_t strlen() const;
+ ssize_t strchr(char, size_t = 0) const;
+ ssize_t strrchr(char) const;
+ ssize_t strstr(const String &) const;
+ int strchrcnt(char) const;
+ String & operator=(const String &);
+ String operator+(const String &) const;
+ String & operator+=(const String &);
+ bool operator!=(const String &) const;
+ bool operator==(const String &) const;
+ bool operator<=(const String &) const;
+ bool operator>=(const String &) const;
+ bool operator<(const String &) const;
+ bool operator>(const String &) const;
+ char operator[](size_t i) const;
+ private:
+ static char t[BUFSIZ];
+ char * str;
+};
+
+ostream & operator<<(ostream &, const String &);
+istream & operator>>(istream &, String &);
+
+#else
+#error This only works with a C++ compiler
+#endif
+#endif