X-Git-Url: http://www.andromeda.nl/gitweb/?a=blobdiff_plain;f=src%2FString.h;h=4d80d608ebf9dba132b2f3702cc3ac7872b58c5c;hb=0df94a5457ed8cb150e587946c6131fedd722374;hp=a5f9bf7155278b9f95c2a92fa3b77d22c1234166;hpb=1d3d46661c1f2c44040b1a28bdef2dade3868a96;p=AXE.git diff --git a/src/String.h b/src/String.h index a5f9bf7..4d80d60 100644 --- a/src/String.h +++ b/src/String.h @@ -5,7 +5,7 @@ *********************** ** FILE NAME : String.h ** SYSTEM NAME : Andromeda X-Windows Encapsulation -** VERSION NUMBER : $Revision: 1.1 $ +** VERSION NUMBER : $Revision: 1.2 $ ** ** DESCRIPTION : Character String class definition ** @@ -23,18 +23,22 @@ /***************************** $Log: String.h,v $ - Revision 1.1 2002-07-25 08:01:26 arjen + Revision 1.2 2002-09-28 06:45:51 arjen + New feature: subtring selection by regular expression. + Bugfix: use the std: namespace for STL classes istream and ostream + + Revision 1.1 2002/07/25 08:01:26 arjen First checkin, AXE release 0.2 *****************************/ -// static const char RCSID[] = "$Id: String.h,v 1.1 2002-07-25 08:01:26 arjen Exp $"; +// static const char RCSID[] = "$Id: String.h,v 1.2 2002-09-28 06:45:51 arjen Exp $"; #ifndef STRING_H #define STRING_H #include -#include +#include #include #include @@ -180,16 +184,30 @@ public: /* * Substring selection + * + * A substring can be selected by a start index and a length or + * by matching a regular expression. + * + * Selecting a substring by regular expression, combined with + * the lvalue semantics of the substring class is a particularly + * powerful concept. Possible uses are for example: + * + * (assuming String S, M; regex R;) + * M = S(R); -> Returns matching part of S into M. + * S(R) = "replacement"; -> replace matching part of S. + * S(R) = ""; -> Removes matching part from S. + * S(R) == S; -> true if and only if all of S matches R exactly. */ substring operator()(int start, int len); + substring operator()(const regex &r); /* * Input and output */ - friend ostream& operator<<(ostream &, const String &); - friend istream& operator>>(istream &, String &); + friend std::ostream& operator<<(std::ostream &, const String &); + friend std::istream& operator>>(std::istream &, String &); /* * String comparison tests @@ -333,6 +351,8 @@ public: class regex { + friend class String; + regex_t expression; public: