ptypes

ptypes Mercurial Source Tree


Root/doc/string.manipulation.html

<html><!-- #BeginTemplate "/Templates/tmpl.dwt" --><!-- DW6 -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>PTypes: string: manipulation</title>
<!-- #EndEditable --> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="styles.css">
</head>
<body bgcolor="#FFFFFF" leftmargin="40" marginwidth="40">
<p><a href="../index.html"><img src="title-21.png" width="253" height="39" alt="C++ Portable Types Library (PTypes) Version 2.1" border="0"></a> 
<hr size="1" noshade>
<!-- #BeginEditable "body" --> 
<p class="hpath"><a href="index.html">Top</a>: <a href="basic.html">Basic types</a>: 
<a href="string.html">string</a>: Manipulation</p>
<blockquote> 
<pre class="lang">#include <ptypes.h>

<span class="comment">// get/set length and misc.</span>
int    length(const string& s);
char*  setlength(string&, int);
char*  unique(string&);
void   clear(string& s);
bool   isempty(const string& s);

<span class="comment">// concatenate</span>
void   concat(string& s, const char* sc, int catlen);

<span class="comment">// copy (get substring by position and length)</span>
string copy(const string& s, int from [, int cnt ] );

<span class="comment">// insert string or character</span>
void   ins(const char* s1, string& s, int at);
void   ins(char s1, string& s, int at);
void   ins(const string& s1, string& s, int at);
void   ins(const char* s1, int s1len, string& s, int at);

<span class="comment">// delete substring</span>
void   del(string& s, int at [, int cnt ] );

<span class="comment">// find substring or character</span>
int    pos(const char* s1, const string& s);
int    pos(char s1, const string& s);
int    pos(const string& s1, const string& s);
int    rpos(char s1, const string& s);

<span class="comment">// compare substring</span>
bool   contains(const char* s1, const string& s, int at);
bool   contains(char s1, const string& s, int at);
bool   contains(const string& s1, const string& s, int at);
bool   contains(const char* s1, int s1len, const string& s, int at);
</pre>
</blockquote>
<p><span class="def">int length(const string& s)</span> returns the actual length 
of the string, not counting the terminating null-symbol.</p>
<p><span class="def">char* setlength(string&, int)</span> changes the actual length 
of the string. The content of the original string is preserved, however the content 
of extra characters added during reallocation is undefined. This function returns 
a pointer to a unique buffer (i.e. refcount is 1), like function <span class="lang">unique()</span> 
below. Even if the length of the string is not changing, <span class="lang">setlength()</span> 
guarantees to make the string unique.</p>
<p><span class="def">char* unique(string&)</span> makes the string buffer unique, 
i.e. a new buffer is allocated and data is copied if necessary, so that the reference 
count after calling this function is guaranteed to be 1. All string manipulation 
functions call <span class="lang">unique()</span> whenever a modification is made 
on the string buffer. You may need to call this function explicitly to obtain 
a character pointer to the buffer; in all other cases reference counting mechanism 
works transparently.</p>
<p><span class="def">bool isempty(string&)</span> returns true if the given 
string is empty. Using this function is preferable to comparing the string with 
empty string literal "".</p>
<p><span class="def">clear(string&)</span> makes the given string empty. Using 
this function is preferable to assigning an empty string literal "".</p>
<p><span class="def">concat(string& s, const char* sc, int catlen)</span> adds 
the given buffer <span class="lang">sc</span> of length <span class="lang">catlen</span> 
to the string object <span class="lang">s</span>. Use operators + and += instead 
to concatenate characters, null-terminated strings and string objects.</p>
<p><span class="def">string copy(const string& s, int from [, int cnt ] )</span> 
returns a substring of <span class="lang">s</span> starting from position <span class="lang">from</span> 
and containing <span class="lang">cnt</span> characters. If <span class="lang">cnt</span> 
is omitted, the rest of the string <span class="lang">s</span> starting from position 
<span class="lang">from</span> is returned.</p>
<p><span class="def">ins(..., string& s, int at)</span> inserts a character, a 
null-terminated string, a string object or a buffer with specified length into 
string object <span class="lang">s</span> at the given position <span class="lang">at</span>. 
If the position is out of bounds, <span class="lang">ins()</span> does nothing.</p>
<p><span class="def">del(string& s, int at [, int cnt ] )</span> deletes <span class="lang">cnt</span> 
characters starting from position <span class="lang">at</span> of the string <span class="lang">s</span>. 
If <span class="lang">cnt</span> is omitted, the rest of the string starting from 
<span class="lang">at</span> is deleted.</p>
<p><span class="def">int pos(..., const string& s)</span> returns the position 
of the first occurrence of a character, a null-terminated string or a string object 
(first parameter) in the source string <span class="lang">s</span>, or returns 
-1 if the substring is not found. Function <span class="lang">rpos()</span> performs 
reverse-search.</p>
<p><span class="def">bool contains(..., const string& s, int at)</span> returns 
true if the given character, null-terminated string or string object (first parameter) 
equals the substring of <span class="lang">s</span> at the given position <span class="lang">at</span>.</p>
<p class="seealso">See also: <a href="string.constructors.html">Constructors/destructors</a>, 
<a href="string.operators.html">Operators</a>, <a href="string.typecasts.html">Typecasts</a>, 
<a href="string.conversion.html">Conversion</a></p>
<!-- #EndEditable -->
<hr size="1">
<a href="../index.html" class="ns">PTypes home</a>
</body>
<!-- #EndTemplate --></html>
Source at commit 209d6fa3805c created 11 years 7 months ago.
By Nathan Adams, Updating tparray to use variants as array because tpodlist was causing variant data corruption

Archive Download this file

Branches

Tags

Page rendered in 0.86778s using 11 queries.