Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 0e54ba0ee564ce6063a5e83aa86060c5 > files > 218

festival-speechtools-devel-1.2.96-18.fc14.i686.rpm

<!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> &amp;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 &amp;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 &amp;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 &amp;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 &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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 &amp;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 &amp;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> &amp;re, int &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;os, const <!1><A HREF="EST_String.html">EST_String</A> &amp;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> &amp;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> &amp;ex, const <!1><A HREF="EST_String.html">EST_String</A> &amp;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> &amp;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> &amp;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 (&amp;starts)[EST_Regex_max_subexpressions], int (&amp;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> &amp;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> &amp;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&amp; </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>&amp; </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>&amp; </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>&amp; </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>&amp; </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>&amp; </TD><TD><B>operator = </B> (const <!1><A HREF="EST_String.html">EST_String</A> &amp;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>&amp; 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 &amp;<!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int &amp;<!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> &amp;s, int from, int &amp;<!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int &amp;<!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> &amp;ex, int from, int &amp;<!1><A HREF="EST_Track.html#DOC.71.7.9">start</A>, int &amp;<!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> &amp;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> &amp;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> &amp;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 &amp;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 &amp;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 &amp;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 &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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 &amp;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 &amp;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> &amp;re, int &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;os, const <!1><A HREF="EST_String.html">EST_String</A> &amp;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> &amp;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> &amp;ex, const <!1><A HREF="EST_String.html">EST_String</A> &amp;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> &amp;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> &amp;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 (&amp;starts)[EST_Regex_max_subexpressions], int (&amp;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> &amp;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> &amp;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> &amp;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&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; operator = (const <!1><A HREF="EST_String.html">EST_String</A> &amp;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> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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> &amp;<!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> &amp;<!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> &amp;<!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> &amp;<!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> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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> &amp;<!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> &amp;<!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> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR>  inline int operator &lt; (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>)<BR>  inline int operator &lt; (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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 &lt; (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR>  inline int operator &gt; (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR>  inline int operator &gt; (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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 &gt; (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR>  inline int operator &lt;= (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR>  inline int operator &lt;= (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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 &lt;= (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR>  inline int operator &gt;= (const char *<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_String.html#DOC.75.50.8.1">b</A>) <BR>  inline int operator &gt;= (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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 &gt;= (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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> &amp;<!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> &amp;<!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> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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> &amp;<!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> &amp;<!1><A HREF="EST_Wave.html#DOC.81.4.1">a</A>, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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>&amp; 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> &amp; 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> &amp;s)<BR>  <!1><A HREF="EST_String.html">EST_String</A> downcase(const <!1><A HREF="EST_String.html">EST_String</A> &amp;s)<BR>  ostream &amp;operator &lt;&lt; (ostream &amp;s, const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!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 &lt;awb@cstr.ed.ac.uk&gt;
Richard Caley &lt;rjc@cstr.ed.ac.uk&gt;

<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>