1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This is the developer's manual for Aspell.
Copyright © 2002, 2003, 2004, 2006 Kevin Atkinson.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A
copy of the license is included in the section entitled "GNU Free
Documentation License". -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Aspell Developer’s Manual: Strings</title>
<meta name="description" content="Aspell spell checker developer’s manual.">
<meta name="keywords" content="Aspell Developer’s Manual: Strings">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="index.html#Top" rel="up" title="Top">
<link href="Smart-Pointers.html#Smart-Pointers" rel="next" title="Smart Pointers">
<link href="Source-Code-Layout.html#Source-Code-Layout" rel="prev" title="Source Code Layout">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
table:not([class]), table:not([class]) th, table:not([class]) td {
padding: 2px 0.3em 2px 0.3em;
border: thin solid #D0D0D0;
border-collapse: collapse;
}
-->
</style>
<meta name=viewport content="width=device-width, initial-scale=1">
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Strings"></a>
<div class="header">
<p>
Next: <a href="Smart-Pointers.html#Smart-Pointers" accesskey="n" rel="next">Smart Pointers</a>, Previous: <a href="Source-Code-Layout.html#Source-Code-Layout" accesskey="p" rel="prev">Source Code Layout</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
<hr>
<a name="Strings-1"></a>
<h2 class="chapter">7 Strings</h2>
<a name="String"></a>
<h3 class="section">7.1 String</h3>
<p>The <code>String</code> class provided the same functionality of the C++
string except for fewer constructors. It also inherits <code>OStream</code>
so that you can write to it with the <code><<</code> operator. It is
defined in <code>string.hpp</code>.
</p>
<a name="ParmString"></a>
<h3 class="section">7.2 ParmString</h3>
<p>ParmString is a special string class that is designed to be used as a
parameter for a function that is expecting a string. It is defined in
<code>parm_string.hpp</code>. It will allow either a <code>const char *</code> or
<code>String</code> class to be passed in. It will automatically convert to
a <code>const char *</code>. The string can also be accessed via the
<code>str</code> method. Usage example:
</p><pre class="verbatim">void foo(ParmString s1, ParmString s2) {
const char * str0 = s1;
unsigned int size0 = s2.size()
if (s1 == s2 || s2 == "bar") {
...
}
}
...
String s1 = "...";
foo(s1);
const char * s2 = "...";
foo(s2);
</pre>
<p>This class should be used when a string is being passed in as a
parameter. It is faster than using <code>const String &</code> (as that
will create an unnecessary temporary when a <code>const char *</code> is
passed in), and is less annoying than using <code>const char *</code> (as it
doesn’t require the <code>c_str()</code> method to be used when a
<code>String</code> is passed in).
</p>
<a name="CharVector"></a>
<h3 class="section">7.3 CharVector</h3>
<p>A character vector is basically a <code>Vector<char></code> but it has a few
additional methods for dealing with strings which <code>Vector</code> does
not provide. It, like <code>String</code>, is also inherits <code>OStream</code>
so that you can write to it with the <code><<</code> operator. It is
defined in <code>char_vector.hpp</code>. Use it when ever you need a string
which is guaranteed to be in a continuous block of memory which you
can write to.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Smart-Pointers.html#Smart-Pointers" accesskey="n" rel="next">Smart Pointers</a>, Previous: <a href="Source-Code-Layout.html#Source-Code-Layout" accesskey="p" rel="prev">Source Code Layout</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
</body>
</html>
|