<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>class EST_String</TITLE> <META NAME="GENERATOR" CONTENT="DOC++ 3.4.6"> </HEAD> <body bgcolor="#ffffff" link="#0000ff" vlink="#dd0000" text="#000088" alink="9000ff"> <A HREF = "http://www.cstr.ed.ac.uk/"> <IMG align=left BORDER=0 SRC = "cstr.gif"></A> <A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html"> <IMG BORDER=0 ALIGN=right SRC="est.jpg" width=150 height=93></A> <br> <br clear=left> <p align=right> In file ../include/EST_String.h:<TABLE BORDER=0><TR> <TD VALIGN=TOP><H2>class <A HREF="#DOC.DOCU">EST_String</A></H2></TD></H2></TD></TR></TABLE> <BLOCKQUOTE>A non-copyleft implementation of a string class to use with compilers that aren't GNU C++.</BLOCKQUOTE> <HR> <H2>Inheritance:</H2> <APPLET CODE="ClassGraph.class" WIDTH=600 HEIGHT=95> <param name=classes value="CEST_String,MEST_String.html,CEST_Pathname,MEST_Pathname.html,CEST_Regex,MEST_Regex.html"> <param name=before value="M,M|_,Mr-"> <param name=after value="M,M,M"> <param name=indent value="0,0,0"> <param name=arrowdir value="down"> </APPLET> <HR> <DL> <P><TABLE> <DT><H3>Public Fields</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.75.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static const char* </TD><TD><B>version</B> <BR> <I>Global version string</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static const <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>Empty</B> <BR> <I>Constant empty string</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.52"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Split a string into parts.</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.52.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>max</B> <BR> <I></I> </TD></TR></TABLE></P> </TD></TR></TABLE></P> <P><TABLE> <DT><H3>Public Methods</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.75.20"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_String</B> (void)<BR> <I>Construct an empty string</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.21"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_String</B> (const char* s)<BR> <I>Construct from char *</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.22"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_String</B> (const char* s, int start_or_fill, int len)<BR> <I>Construct from part of char * or fill with given character</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.23"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_String</B> (const char* s, int s_size, int <!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int len)<BR> <I>Construct from C string</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.24"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_String</B> (const <!1><A HREF="EST_String.html#DOC.75.24">EST_String</A> &s)<BR> <I>Copy constructor We have to declare our own copy constructor to lie to the compier about the constness of the RHS</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.25"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_String</B> (const char c)<BR> <I>Construct from single char.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.26"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>~EST_String</B> ()<BR> <I>Destructor</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.27"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>length</B> (void) const <BR> <I>Length of string (<EM>not</EM> length of underlying chunk)</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.28"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>space</B> (void) const <BR> <I>Size of underlying chunk</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.29"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>const char* </TD><TD><B>str</B> (void) const <BR> <I>Get a const-pointer to the actual memory</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.30"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>char* </TD><TD><B>updatable_str</B> (void)<BR> <I>Get a writable pointer to the actual memory</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.31"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>FromChar</B> (const char c)<BR> <I>Build string from a single character</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.32"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>Number</B> (int i, int base=10)<BR> <I>Build string from an integer</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.33"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>Number</B> (long i, int base=10)<BR> <I>Build string from a long integer</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.34"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>Number</B> (double <!1><A HREF="EST_SCFG_traintest.html#DOC.106.4">d</A>)<BR> <I>Build string from a double</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.35"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>Number</B> (float <!1><A HREF="EST_Viterbi_Decoder.html#DOC.90.4">f</A>)<BR> <I>Build string from a float</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.36"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>Int</B> (bool &ok) const <BR> <I>Convert to an integer</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.37"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>long </TD><TD><B>Long</B> (bool &ok) const <BR> <I>Convert to a long</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.38"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float </TD><TD><B>Float</B> (bool &ok) const <BR> <I>Convert to a float</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.39"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>double </TD><TD><B>Double</B> (bool &ok) const <BR> <I>Convert to a double</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.40"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Before </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.40.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>before</B> (int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, int len=0) const <BR> <I>Part before position</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.40.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>before</B> (const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Part before first matching substring after pos</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.40.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>before</B> (const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Part before first matching substring after pos</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.40.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>before</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Part before first match of regexp after pos</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.41"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>At </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.41.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>at</B> (int from, int len=0) const <BR> <I>Return part at position</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.41.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>at</B> (const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Return part where substring found (not useful, included for completeness)</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.41.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>at</B> (const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Return part where substring found (not useful, included for completeness)</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.41.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>at</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Return part matching regexp</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.42"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>After </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.42.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>after</B> (int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, int len=1) const <BR> <I>Part after pos+len</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.42.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>after</B> (const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Part after substring</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.42.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>after</B> (const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Part after substring</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.42.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>after</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Part after match of regular expression</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.43"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Search for something </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.43.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>search</B> (const char* s, int len, int &mlen, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Find a substring</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.43.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>search</B> (const <!1><A HREF="EST_String.html">EST_String</A> s, int &mlen, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Find a substring</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.43.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>search</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &re, int &mlen, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0, int* starts=NULL, int* ends=NULL) const <BR> <I>Find a match of the regular expression</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.44"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Get position of something </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.44.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>index</B> (const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Position of substring (starting at pos)</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.44.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>index</B> (const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Position of substring (starting at pos)</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.44.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>index</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Position of match of regexp (starting at pos)</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.45"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Does string contain something? </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.45.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>contains</B> (const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const <BR> <I>Does it contain this substring?</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.45.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>contains</B> (const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const <BR> <I>Does it contain this substring?</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.45.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>contains</B> (const char c, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const <BR> <I>Does it contain this character?</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.45.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>contains</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const <BR> <I>Does it contain a match for this regular expression?</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.46"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Does string exactly match? </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.46.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>matches</B> (const char* e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Exatly match this string?</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.46.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>matches</B> (const <!1><A HREF="EST_String.html">EST_String</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const <BR> <I>Exatly match this string?</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.46.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>matches</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0, int* starts=NULL, int* ends=NULL) const <BR> <I>Exactly matches this regular expression, can return ends of sub-expressions</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Global replacement </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (const char* os, const <!1><A HREF="EST_String.html">EST_String</A> &s)<BR> <I>Substitute one string for another</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (const char* os, const char* s)<BR> <I>Substitute one string for another</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (const <!1><A HREF="EST_String.html">EST_String</A> &os, const <!1><A HREF="EST_String.html">EST_String</A> &s)<BR> <I>Substitute one string for another</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (const <!1><A HREF="EST_String.html">EST_String</A> &os, const char* s)<BR> <I>Substitute one string for another</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, const <!1><A HREF="EST_String.html">EST_String</A> &s)<BR> <I>Substitute string for matches of regular expression</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, const char* s)<BR> <I>Substitute string for matches of regular expression</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>gsub</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int bracket_num)<BR> <I>Substitute string for matches of regular expression</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.47.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>subst</B> (<!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="XML_Parser.html#DOC.190.3.6">source</A>, int (&starts)[EST_Regex_max_subexpressions], int (&ends)[EST_Regex_max_subexpressions])<BR> <I>Substitute the result of a match into a string</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.48"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Frequency counts </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.48.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>freq</B> (const char* s) const <BR> <I>Number of occurances of substring</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.48.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>freq</B> (const <!1><A HREF="EST_String.html">EST_String</A> &s) const <BR> <I>Number of occurances of substring</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.48.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>freq</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> &s) const <BR> <I>Number of matches of regular expression</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.49"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Quoting </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.49.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>quote</B> (const char quotec) const <BR> <I>Return the string in quotes with internal quotes protected</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.49.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>quote_if_needed</B> (const char quotec) const <BR> <I>Return in quotes if there is something to protect (eg.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.49.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>unquote</B> (const char quotec) const <BR> <I>Remove quotes and unprotect internal quotes</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.49.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>unquote_if_needed</B> (const char quotec) const <BR> <I>Remove quotes if any</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Operators </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>const char </TD><TD><B>operator () </B> (int i) const <BR> <I>Function style access to constant strings</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>char& </TD><TD><B>operator [] </B> (int i)<BR> <I>Array style access to writable strings</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>operator const char*</B> () const <BR> <I>Cast to const char * by simply giving access to pointer</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>operator char*</B> ()<BR> <I>Cast to char *, may involve copying</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Add to end of string. </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.5.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A>& </TD><TD><B>operator += </B> (const char* <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> <I>Add C string to end of EST_String</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.5.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A>& </TD><TD><B>operator += </B> (const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> <I>Add EST_String to end of EST_String</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Asignment </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.6.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A>& </TD><TD><B>operator = </B> (const char* <!1><A HREF="EST_String.html#DOC.75.29">str</A>)<BR> <I>Assign C string to EST_String</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.6.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A>& </TD><TD><B>operator = </B> (const char c)<BR> <I>Assign single character to EST_String</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.6.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A>& </TD><TD><B>operator = </B> (const <!1><A HREF="EST_String.html">EST_String</A> &s)<BR> <I>Assign EST_String to EST_String</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Concatenation </B> <BR> <I></I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>relational operators </B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.8.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> </TD><TD><B>b</B> <BR> <I></I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.8.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>return</B> (<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>==<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> <I></I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.50.8.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> </TD><TD><B>compare</B> (<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> <I></I> </TD></TR></TABLE></P> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.51"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>String comparison.</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.51.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> </TD><TD><B>compare</B> (<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, <!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>)<BR> <I></I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.51.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Case folded comparison.</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.75.51.2.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>const <!1><A HREF="EST_String.html">EST_String</A>& table <!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> </TD><TD><B>fcompare</B> (<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, (const unsigned char* )(const char* )table)<BR> <I></I> </TD></TR></TABLE></P> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.53"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static <!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>cat</B> (const <!1><A HREF="EST_String.html">EST_String</A> s1, const <!1><A HREF="EST_String.html">EST_String</A> s2 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s3 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s4 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s5 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s6 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s7 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s8 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s9 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A> )<BR> <I>Concatenate a number of strings.</I> </TD></TR></TABLE></P> <P><TABLE> <DT><H3>Public</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.75.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>typedef int </TD><TD><B>EST_string_size</B> <BR> <I>Type of string size field</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.75.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>#define </TD><TD><B>MAX_STRING_SIZE</B> (INT_MAX)<BR> <I>Maximum string size</I> </TD></TR></TABLE></P> </DL> <A NAME="DOC.DOCU"></A> <HR> <H2>Documentation</H2> <BLOCKQUOTE>A non-copyleft implementation of a string class to use with compilers that aren't GNU C++. <P>Strings are reference-counted and reasonably efficiant (eg you can pass them around, into and out of functions and so on without worrying too much about the cost). <P>The associated class EST_Regex can be used to represent regular expressions. <P></BLOCKQUOTE> <DL> <A NAME="version"></A> <A NAME="DOC.75.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static const char* version</B></TT> <DD>Global version string <DL><DT><DD></DL><P> <A NAME="Empty"></A> <A NAME="DOC.75.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static const <!1><A HREF="EST_String.html">EST_String</A> Empty</B></TT> <DD>Constant empty string <DL><DT><DD></DL><P> <A NAME="EST_string_size"></A> <A NAME="DOC.75.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>typedef int EST_string_size</B></TT> <DD>Type of string size field <DL><DT><DD></DL><P> <A NAME="MAX_STRING_SIZE"></A> <A NAME="DOC.75.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>#define MAX_STRING_SIZE(INT_MAX)</B></TT> <DD>Maximum string size <DL><DT><DD></DL><P><DL> <A NAME="locate"></A> <A NAME="DOC.75.15.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int locate(const char* it, int len, int from, int &<!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int &<!1><A HREF="EST_Wave.html#DOC.81.5.6">end</A>) const </B></TT> <DD>Find substring <DL><DT><DD></DL><P> <A NAME="locate"></A> <A NAME="DOC.75.15.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int locate(const <!1><A HREF="EST_String.html">EST_String</A> &s, int from, int &<!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int &<!1><A HREF="EST_Wave.html#DOC.81.5.6">end</A>) const </B></TT> <DD>Find substring <DL><DT><DD></DL><P> <A NAME="locate"></A> <A NAME="DOC.75.15.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int locate(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int from, int &<!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int &<!1><A HREF="EST_Wave.html#DOC.81.5.6">end</A>, int* starts=NULL, int* ends=NULL) const </B></TT> <DD>Find match for regexp <DL><DT><DD></DL><P></DL> <DL> <A NAME="chop_internal"></A> <A NAME="DOC.75.17.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> chop_internal(const char* s, int <!1><A HREF="EST_String.html#DOC.75.27">length</A>, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, <!1><A HREF="EST_String.html#DOC.75.11">EST_chop_direction</A> directionult) const </B></TT> <DD>Locate subsring and chop <DL><DT><DD></DL><P> <A NAME="chop_internal"></A> <A NAME="DOC.75.17.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> chop_internal(int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, int <!1><A HREF="EST_String.html#DOC.75.27">length</A>, <!1><A HREF="EST_String.html#DOC.75.11">EST_chop_direction</A> directionult) const </B></TT> <DD>Chop at given position <DL><DT><DD></DL><P> <A NAME="chop_internal"></A> <A NAME="DOC.75.17.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> chop_internal(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, <!1><A HREF="EST_String.html#DOC.75.11">EST_chop_direction</A> directionult) const </B></TT> <DD>Locate match for expression and chop <DL><DT><DD></DL><P></DL> <DL> <A NAME="gsub_internal"></A> <A NAME="DOC.75.18.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub_internal(const char* os, int olength, const char* s, int <!1><A HREF="EST_String.html#DOC.75.27">length</A>)</B></TT> <DD>Substitute for string <DL><DT><DD></DL><P> <A NAME="gsub_internal"></A> <A NAME="DOC.75.18.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub_internal(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, const char* s, int <!1><A HREF="EST_String.html#DOC.75.27">length</A>)</B></TT> <DD>Substitute for matches of regexp <DL><DT><DD></DL><P></DL> <A NAME="EST_String"></A> <A NAME="DOC.75.20"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_String(void)</B></TT> <DD>Construct an empty string <DL><DT><DD></DL><P> <A NAME="EST_String"></A> <A NAME="DOC.75.21"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_String(const char* s)</B></TT> <DD>Construct from char * <DL><DT><DD></DL><P> <A NAME="EST_String"></A> <A NAME="DOC.75.22"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_String(const char* s, int start_or_fill, int len)</B></TT> <DD>Construct from part of char * or fill with given character <DL><DT><DD></DL><P> <A NAME="EST_String"></A> <A NAME="DOC.75.23"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_String(const char* s, int s_size, int <!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int len)</B></TT> <DD>Construct from C string <DL><DT><DD></DL><P> <A NAME="EST_String"></A> <A NAME="DOC.75.24"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_String(const <!1><A HREF="EST_String.html#DOC.75.24">EST_String</A> &s)</B></TT> <DD>Copy constructor We have to declare our own copy constructor to lie to the compier about the constness of the RHS <DL><DT><DD></DL><P> <A NAME="EST_String"></A> <A NAME="DOC.75.25"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_String(const char c)</B></TT> <DD>Construct from single char. This constructor is not usually included as it can mask errors. <DL><DT><DT><B>See Also:</B><DD>__FSF_COMPATABILITY__<BR><DD></DL><P> <A NAME="~EST_String"></A> <A NAME="DOC.75.26"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> ~EST_String()</B></TT> <DD>Destructor <DL><DT><DD></DL><P> <A NAME="length"></A> <A NAME="DOC.75.27"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int length(void) const </B></TT> <DD>Length of string (<EM>not</EM> length of underlying chunk) <DL><DT><DD></DL><P> <A NAME="space"></A> <A NAME="DOC.75.28"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int space(void) const </B></TT> <DD>Size of underlying chunk <DL><DT><DD></DL><P> <A NAME="str"></A> <A NAME="DOC.75.29"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const char* str(void) const </B></TT> <DD>Get a const-pointer to the actual memory <DL><DT><DD></DL><P> <A NAME="updatable_str"></A> <A NAME="DOC.75.30"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>char* updatable_str(void)</B></TT> <DD>Get a writable pointer to the actual memory <DL><DT><DD></DL><P> <A NAME="FromChar"></A> <A NAME="DOC.75.31"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static <!1><A HREF="EST_String.html">EST_String</A> FromChar(const char c)</B></TT> <DD>Build string from a single character <DL><DT><DD></DL><P> <A NAME="Number"></A> <A NAME="DOC.75.32"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static <!1><A HREF="EST_String.html">EST_String</A> Number(int i, int base=10)</B></TT> <DD>Build string from an integer <DL><DT><DD></DL><P> <A NAME="Number"></A> <A NAME="DOC.75.33"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static <!1><A HREF="EST_String.html">EST_String</A> Number(long i, int base=10)</B></TT> <DD>Build string from a long integer <DL><DT><DD></DL><P> <A NAME="Number"></A> <A NAME="DOC.75.34"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static <!1><A HREF="EST_String.html">EST_String</A> Number(double <!1><A HREF="EST_SCFG_traintest.html#DOC.106.4">d</A>)</B></TT> <DD>Build string from a double <DL><DT><DD></DL><P> <A NAME="Number"></A> <A NAME="DOC.75.35"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static <!1><A HREF="EST_String.html">EST_String</A> Number(float <!1><A HREF="EST_Viterbi_Decoder.html#DOC.90.4">f</A>)</B></TT> <DD>Build string from a float <DL><DT><DD></DL><P> <A NAME="Int"></A> <A NAME="DOC.75.36"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int Int(bool &ok) const </B></TT> <DD>Convert to an integer <DL><DT><DD></DL><P> <A NAME="Long"></A> <A NAME="DOC.75.37"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>long Long(bool &ok) const </B></TT> <DD>Convert to a long <DL><DT><DD></DL><P> <A NAME="Float"></A> <A NAME="DOC.75.38"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float Float(bool &ok) const </B></TT> <DD>Convert to a float <DL><DT><DD></DL><P> <A NAME="Double"></A> <A NAME="DOC.75.39"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>double Double(bool &ok) const </B></TT> <DD>Convert to a double <DL><DT><DD></DL><P> <A NAME="Before "></A> <A NAME="DOC.75.40"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Before </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="before"></A> <A NAME="DOC.75.40.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> before(int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, int len=0) const </B></TT> <DD>Part before position <DL><DT><DD></DL><P> <A NAME="before"></A> <A NAME="DOC.75.40.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> before(const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Part before first matching substring after pos <DL><DT><DD></DL><P> <A NAME="before"></A> <A NAME="DOC.75.40.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> before(const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Part before first matching substring after pos <DL><DT><DD></DL><P> <A NAME="before"></A> <A NAME="DOC.75.40.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> before(<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Part before first match of regexp after pos <DL><DT><DD></DL><P></DL> <A NAME="At "></A> <A NAME="DOC.75.41"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> At </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="at"></A> <A NAME="DOC.75.41.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> at(int from, int len=0) const </B></TT> <DD>Return part at position <DL><DT><DD></DL><P> <A NAME="at"></A> <A NAME="DOC.75.41.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> at(const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Return part where substring found (not useful, included for completeness) <DL><DT><DD></DL><P> <A NAME="at"></A> <A NAME="DOC.75.41.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> at(const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Return part where substring found (not useful, included for completeness) <DL><DT><DD></DL><P> <A NAME="at"></A> <A NAME="DOC.75.41.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> at(<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Return part matching regexp <DL><DT><DD></DL><P></DL> <A NAME="After "></A> <A NAME="DOC.75.42"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> After </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="after"></A> <A NAME="DOC.75.42.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> after(int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>, int len=1) const </B></TT> <DD>Part after pos+len <DL><DT><DD></DL><P> <A NAME="after"></A> <A NAME="DOC.75.42.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> after(const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Part after substring <DL><DT><DD></DL><P> <A NAME="after"></A> <A NAME="DOC.75.42.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> after(const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Part after substring <DL><DT><DD></DL><P> <A NAME="after"></A> <A NAME="DOC.75.42.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> after(<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Part after match of regular expression <DL><DT><DD></DL><P></DL> <A NAME="Search for something "></A> <A NAME="DOC.75.43"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Search for something </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="search"></A> <A NAME="DOC.75.43.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int search(const char* s, int len, int &mlen, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Find a substring <DL><DT><DD></DL><P> <A NAME="search"></A> <A NAME="DOC.75.43.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int search(const <!1><A HREF="EST_String.html">EST_String</A> s, int &mlen, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Find a substring <DL><DT><DD></DL><P> <A NAME="search"></A> <A NAME="DOC.75.43.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int search(<!1><A HREF="EST_Regex.html">EST_Regex</A> &re, int &mlen, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0, int* starts=NULL, int* ends=NULL) const </B></TT> <DD>Find a match of the regular expression <DL><DT><DD></DL><P></DL> <A NAME="Get position of something "></A> <A NAME="DOC.75.44"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Get position of something </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="index"></A> <A NAME="DOC.75.44.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int index(const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Position of substring (starting at pos) <DL><DT><DD></DL><P> <A NAME="index"></A> <A NAME="DOC.75.44.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int index(const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Position of substring (starting at pos) <DL><DT><DD></DL><P> <A NAME="index"></A> <A NAME="DOC.75.44.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int index(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Position of match of regexp (starting at pos) <DL><DT><DD></DL><P></DL> <A NAME="Does string contain something? "></A> <A NAME="DOC.75.45"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Does string contain something? </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="contains"></A> <A NAME="DOC.75.45.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int contains(const char* s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const </B></TT> <DD>Does it contain this substring? <DL><DT><DD></DL><P> <A NAME="contains"></A> <A NAME="DOC.75.45.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int contains(const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const </B></TT> <DD>Does it contain this substring? <DL><DT><DD></DL><P> <A NAME="contains"></A> <A NAME="DOC.75.45.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int contains(const char c, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const </B></TT> <DD>Does it contain this character? <DL><DT><DD></DL><P> <A NAME="contains"></A> <A NAME="DOC.75.45.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int contains(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=-1) const </B></TT> <DD>Does it contain a match for this regular expression? <DL><DT><DD></DL><P></DL> <A NAME="Does string exactly match? "></A> <A NAME="DOC.75.46"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Does string exactly match? </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="matches"></A> <A NAME="DOC.75.46.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int matches(const char* e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Exatly match this string? <DL><DT><DD></DL><P> <A NAME="matches"></A> <A NAME="DOC.75.46.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int matches(const <!1><A HREF="EST_String.html">EST_String</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0) const </B></TT> <DD>Exatly match this string? <DL><DT><DD></DL><P> <A NAME="matches"></A> <A NAME="DOC.75.46.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int matches(<!1><A HREF="EST_Regex.html">EST_Regex</A> &e, int <!1><A HREF="EST_TIterator.html#DOC.128.2">pos</A>=0, int* starts=NULL, int* ends=NULL) const </B></TT> <DD>Exactly matches this regular expression, can return ends of sub-expressions <DL><DT><DD></DL><P></DL> <A NAME="Global replacement "></A> <A NAME="DOC.75.47"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Global replacement </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="gsub"></A> <A NAME="DOC.75.47.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(const char* os, const <!1><A HREF="EST_String.html">EST_String</A> &s)</B></TT> <DD>Substitute one string for another <DL><DT><DD></DL><P> <A NAME="gsub"></A> <A NAME="DOC.75.47.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(const char* os, const char* s)</B></TT> <DD>Substitute one string for another <DL><DT><DD></DL><P> <A NAME="gsub"></A> <A NAME="DOC.75.47.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(const <!1><A HREF="EST_String.html">EST_String</A> &os, const <!1><A HREF="EST_String.html">EST_String</A> &s)</B></TT> <DD>Substitute one string for another <DL><DT><DD></DL><P> <A NAME="gsub"></A> <A NAME="DOC.75.47.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(const <!1><A HREF="EST_String.html">EST_String</A> &os, const char* s)</B></TT> <DD>Substitute one string for another <DL><DT><DD></DL><P> <A NAME="gsub"></A> <A NAME="DOC.75.47.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, const <!1><A HREF="EST_String.html">EST_String</A> &s)</B></TT> <DD>Substitute string for matches of regular expression <DL><DT><DD></DL><P> <A NAME="gsub"></A> <A NAME="DOC.75.47.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, const char* s)</B></TT> <DD>Substitute string for matches of regular expression <DL><DT><DD></DL><P> <A NAME="gsub"></A> <A NAME="DOC.75.47.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int gsub(<!1><A HREF="EST_Regex.html">EST_Regex</A> &ex, int bracket_num)</B></TT> <DD>Substitute string for matches of regular expression <DL><DT><DD></DL><P> <A NAME="subst"></A> <A NAME="DOC.75.47.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int subst(<!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="XML_Parser.html#DOC.190.3.6">source</A>, int (&starts)[EST_Regex_max_subexpressions], int (&ends)[EST_Regex_max_subexpressions])</B></TT> <DD>Substitute the result of a match into a string <DL><DT><DD></DL><P></DL> <A NAME="Frequency counts "></A> <A NAME="DOC.75.48"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Frequency counts </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="freq"></A> <A NAME="DOC.75.48.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int freq(const char* s) const </B></TT> <DD>Number of occurances of substring <DL><DT><DD></DL><P> <A NAME="freq"></A> <A NAME="DOC.75.48.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int freq(const <!1><A HREF="EST_String.html">EST_String</A> &s) const </B></TT> <DD>Number of occurances of substring <DL><DT><DD></DL><P> <A NAME="freq"></A> <A NAME="DOC.75.48.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int freq(<!1><A HREF="EST_Regex.html">EST_Regex</A> &s) const </B></TT> <DD>Number of matches of regular expression <DL><DT><DD></DL><P></DL> <A NAME="Quoting "></A> <A NAME="DOC.75.49"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Quoting </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="quote"></A> <A NAME="DOC.75.49.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> quote(const char quotec) const </B></TT> <DD>Return the string in quotes with internal quotes protected <DL><DT><DD></DL><P> <A NAME="quote_if_needed"></A> <A NAME="DOC.75.49.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> quote_if_needed(const char quotec) const </B></TT> <DD>Return in quotes if there is something to protect (eg. spaces) <DL><DT><DD></DL><P> <A NAME="unquote"></A> <A NAME="DOC.75.49.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> unquote(const char quotec) const </B></TT> <DD>Remove quotes and unprotect internal quotes <DL><DT><DD></DL><P> <A NAME="unquote_if_needed"></A> <A NAME="DOC.75.49.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> unquote_if_needed(const char quotec) const </B></TT> <DD>Remove quotes if any <DL><DT><DD></DL><P></DL> <A NAME="Operators "></A> <A NAME="DOC.75.50"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Operators </B></TT> <DL><DT><DT><B>Friends:</B><DD> <!1><A HREF="EST_String.html">EST_String</A> operator * (const <!1><A HREF="EST_String.html">EST_String</A> &s, int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>)<BR><DD></DL><P><DL> <A NAME="operator () "></A> <A NAME="DOC.75.50.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const char operator () (int i) const </B></TT> <DD>Function style access to constant strings <DL><DT><DD></DL><P> <A NAME="operator [] "></A> <A NAME="DOC.75.50.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>char& operator [] (int i)</B></TT> <DD>Array style access to writable strings <DL><DT><DD></DL><P> <A NAME="operator const char*"></A> <A NAME="DOC.75.50.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> operator const char*() const </B></TT> <DD>Cast to const char * by simply giving access to pointer <DL><DT><DD></DL><P> <A NAME="operator char*"></A> <A NAME="DOC.75.50.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> operator char*()</B></TT> <DD>Cast to char *, may involve copying <DL><DT><DD></DL><P> <A NAME="Add to end of string. "></A> <A NAME="DOC.75.50.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Add to end of string. </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="operator += "></A> <A NAME="DOC.75.50.5.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A>& operator += (const char* <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)</B></TT> <DD>Add C string to end of EST_String <DL><DT><DD></DL><P> <A NAME="operator += "></A> <A NAME="DOC.75.50.5.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A>& operator += (const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)</B></TT> <DD>Add EST_String to end of EST_String <DL><DT><DD></DL><P></DL> <A NAME="Asignment "></A> <A NAME="DOC.75.50.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Asignment </B></TT> <DL><DT><DD></DL><P><DL> <A NAME="operator = "></A> <A NAME="DOC.75.50.6.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A>& operator = (const char* <!1><A HREF="EST_String.html#DOC.75.29">str</A>)</B></TT> <DD>Assign C string to EST_String <DL><DT><DD></DL><P> <A NAME="operator = "></A> <A NAME="DOC.75.50.6.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A>& operator = (const char c)</B></TT> <DD>Assign single character to EST_String <DL><DT><DD></DL><P> <A NAME="operator = "></A> <A NAME="DOC.75.50.6.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A>& operator = (const <!1><A HREF="EST_String.html">EST_String</A> &s)</B></TT> <DD>Assign EST_String to EST_String <DL><DT><DD></DL><P></DL> <A NAME="Concatenation "></A> <A NAME="DOC.75.50.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Concatenation </B></TT> <DL><DT><DT><B>Friends:</B><DD> <!1><A HREF="EST_String.html">EST_String</A> operator + (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> <!1><A HREF="EST_String.html">EST_String</A> operator + (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> <!1><A HREF="EST_String.html">EST_String</A> operator + (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR><DD></DL><P> <A NAME="relational operators "></A> <A NAME="DOC.75.50.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> relational operators </B></TT> <DL><DT><DT><B>Friends:</B><DD> int operator == (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> int operator == (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> int operator == (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> int operator != (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> int operator != (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> int operator != (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> inline int operator < (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> inline int operator < (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator < (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator > (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator > (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator > (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator <= (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator <= (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator <= (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator >= (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator >= (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR> inline int operator >= (const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR><DD></DL><P><DL> <A NAME="b"></A> <A NAME="DOC.75.50.8.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> b</B></TT> <DL><DT><DD></DL><P> <A NAME="return"></A> <A NAME="DOC.75.50.8.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> return(<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>==<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)</B></TT> <DL><DT><DD></DL><P> <A NAME="compare"></A> <A NAME="DOC.75.50.8.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> compare(<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)</B></TT> <DL><DT><DD></DL><P></DL> </DL> <A NAME="String comparison."></A> <A NAME="DOC.75.51"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> String comparison.</B></TT> <DD>All these operators return -1, 0 or 1 to indicate the sort order of the strings. <DL><DT><DT><B>Friends:</B><DD> int <!1><A HREF="EST_String.html#DOC.75.51.1">compare</A>(const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> int <!1><A HREF="EST_String.html#DOC.75.51.1">compare</A>(const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR> inline int <!1><A HREF="EST_String.html#DOC.75.51.1">compare</A>(const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR><DD></DL><P><DL> <A NAME="compare"></A> <A NAME="DOC.75.51.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> compare(<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, <!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>)</B></TT> <DL><DT><DD></DL><P> <A NAME="Case folded comparison."></A> <A NAME="DOC.75.51.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Case folded comparison.</B></TT> <DD>Case folded comparison. <P>The table argument can defined how upper and lower case characters correspond. The default works for ASCII. <DL><DT><DT><B>Friends:</B><DD> int <!1><A HREF="EST_String.html#DOC.75.51.2.1">fcompare</A>(const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, <BR> int <!1><A HREF="EST_String.html#DOC.75.51.2.1">fcompare</A>(const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const char *<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, <BR> inline int <!1><A HREF="EST_String.html#DOC.75.51.2.1">fcompare</A>(const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, <BR><DD></DL><P><DL> <A NAME="fcompare"></A> <A NAME="DOC.75.51.2.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const <!1><A HREF="EST_String.html">EST_String</A>& table <!1><A HREF="EST_String.html#DOC.75.50.8.2">return</A> fcompare(<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, <!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>, (const unsigned char* )(const char* )table)</B></TT> <DL><DT><DD></DL><P></DL> </DL> <A NAME="Split a string into parts."></A> <A NAME="DOC.75.52"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Split a string into parts.</B></TT> <DD> These functions divide up a string producing an array of substrings. <DL><DT><DT><B>Friends:</B><DD> int split(const <!1><A HREF="EST_String.html">EST_String</A> & s, <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Viterbi_Decoder.html#DOC.90.18">result</A>[], <BR><DD></DL><P><DL> <A NAME="max"></A> <A NAME="DOC.75.52.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int max</B></TT> <DL><DT><DD></DL><P></DL> <A NAME="cat"></A> <A NAME="DOC.75.53"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static <!1><A HREF="EST_String.html">EST_String</A> cat(const <!1><A HREF="EST_String.html">EST_String</A> s1, const <!1><A HREF="EST_String.html">EST_String</A> s2 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s3 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s4 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s5 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s6 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s7 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s8 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A>, const <!1><A HREF="EST_String.html">EST_String</A> s9 = <!1><A HREF="EST_String.html#DOC.75.6">Empty</A> )</B></TT> <DD>Concatenate a number of strings. This is more efficiant than multiple uses of + or += <DL><DT><DD></DL><P></DL> <HR> <DL><DT><B>Direct child classes: </B><DD><A HREF="EST_Pathname.html">EST_Pathname</A><BR> <A HREF="EST_Regex.html">EST_Regex</A><BR> </DL> <DL><DT><DT><B>Friends:</B><DD> <!1><A HREF="EST_String.html">EST_String</A> upcase(const <!1><A HREF="EST_String.html">EST_String</A> &s)<BR> <!1><A HREF="EST_String.html">EST_String</A> downcase(const <!1><A HREF="EST_String.html">EST_String</A> &s)<BR> ostream &operator << (ostream &s, const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_String.html#DOC.75.29">str</A>)<BR> class <!1><A HREF="EST_Regex.html">EST_Regex</A><BR><DT><B>Author:</B><DD>Alan W Black <awb@cstr.ed.ac.uk> Richard Caley <rjc@cstr.ed.ac.uk> <DT><B>Version:</B><DD><IMG BORDER=0 SRC=g000005.gif> <DT><B>See Also:</B><DD>EST_Chunk <BR><!1><A HREF="EST_Regex.html">EST_Regex</A> <BR>string_example <BR><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR> <A HREF = "http://www.ed.ac.uk/"> <IMG align=right BORDER=0 SRC = "edcrest.gif"></A> <P Align=left><I>This page is part of the <A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html"> Edinburgh Speech Tools Library</A> documentation <br> Copyright <A HREF="http://www.ed.ac.uk"> University of Edinburgh</A> 1997 <br> Contact: <A HREF="mailto:speech_toolss@cstr.ed.ac.uk"> speech_tools@cstr.ed.ac.uk </a> </P> <br clear=right>