ptypes

ptypes Mercurial Source Tree


Root/doc/string.typecasts.html

<html><!-- #BeginTemplate "/Templates/tmpl.dwt" --><!-- DW6 -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>PTypes: string: typecasts</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>: Typecasts </p>
<blockquote> 
<pre class="lang">#include <ptypes.h>

class string {
    operator (const char*)() const;
}</pre>
</blockquote>
<p>A string object can be assigned to a variable or passed as an actual parameter 
of type <span class="lang">const char*</span> implicitly (by default). Such assignments 
should be used carefully, since the library does not keep track of whether a char 
pointer refers to the given string buffer. To make sure that a char pointer refers 
to a valid string buffer, always make the scope of a char pointer variable smaller 
than or equal to the scope of a string object. In most cases passing a string 
object to a system or API call is safe (see examples below). This typecast operator 
does not perform any actions and simply returns a pointer to the string buffer.</p>
<p>The value of the char pointer is guaranteed to be non-NULL. Even if the string 
is empty, the char pointer will refer to a null-symbol.</p>
<p>A string buffer can not be modified through a constant char pointer. If you 
want to modify the string buffer through a char pointer, use <span class="lang">unique(string&)</span> 
function instead. This function always returns a reference to a unique string 
buffer (i.e. when the reference count is 1).</p>
<p><b>Compatibility note</b>: MSVC and GCC may treat type casts in different ways 
when passing a string object to a function that takes (...) parameters, e.g. <span class="lang">printf()</span> 
or <span class="lang">outstm::putf()</span>. You should explicitly instruct the 
compiler to cast the string object to <span class="lang">(const char*)</span> 
to avoid this problem. PTypes provides a shorter typedef <span class="lang">pconst</span> 
for this.</p>
<p><b>Examples</b></p>
<blockquote> 
<pre>
void assignment_example()
{
   string s = "abcdef";
   const char* p = s;
   <span class="comment">// do string manipulation here...</span>
}

void function_call_example()
{
   string s = "abcdef";
   puts(s);
   printf("%s\n", pconst(s));
}
</pre>
</blockquote>
<p class="seealso">See also: <a href="string.constructors.html">Constructors/destructors</a>, 
<a href="string.operators.html">Operators</a>, <a href="string.manipulation.html">Manipulation</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 tip created 11 years 7 months ago.
By Nathan Adams, Updating makefile

Archive Download this file

Branches

Tags

Page rendered in 0.76456s using 11 queries.