<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bicosyes - since evermore... &#187; multiline</title>
	<atom:link href="http://bicosyes.com/tag/multiline/feed/" rel="self" type="application/rss+xml" />
	<link>http://bicosyes.com</link>
	<description></description>
	<lastBuildDate>Sat, 06 Mar 2010 20:03:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C++, cadenas multilínea de forma clara</title>
		<link>http://bicosyes.com/c-cadenas-multilinea-de-forma-clara/</link>
		<comments>http://bicosyes.com/c-cadenas-multilinea-de-forma-clara/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 14:05:05 +0000</pubDate>
		<dc:creator>blaxter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[multiline]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://bicosyes.com/?p=846</guid>
		<description><![CDATA[Según el estándar c++98 (sección 2.13.4) las cadenas literales tienen como propiedad que durante el análisis léxico del código fuente (la primera fase que realiza el compilador, convirtiendo texto de entrada a tokens y símbolos) se concatenarán cadenas adyacentes. In &#8230; <a href="http://bicosyes.com/c-cadenas-multilinea-de-forma-clara/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Según el <a href="http://en.wikipedia.org/wiki/ISO/IEC_14882#Language_standard">estándar c++98</a> (sección 2.13.4) las cadenas literales tienen como propiedad que durante el análisis léxico del código fuente (la primera fase que realiza el compilador, convirtiendo texto de entrada a tokens y símbolos) se concatenarán cadenas adyacentes.</p>
<blockquote><p>In translation phase 6 (2.1), adjacent narrow string literals are concatenated and adjacent wide string literals are concatenated. </p></blockquote>
<p>Esto viene a decir que podemos partir nuestras cadenas en cualquier momento sin poner ningún signo de concatenación entre ellas, de esta forma:</p>
<pre class="cpp">&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> s1* = <span style="color: #666666;">&quot;dum&quot;</span> <span style="color: #666666;">&quot;de&quot;</span> <span style="color: #666666;">&quot;dum&quot;</span>;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> s2* = <span style="color: #666666;">&quot;dum&quot;</span>
                 <span style="color: #666666;">&quot;de&quot;</span>
                 <span style="color: #666666;">&quot;dum&quot;</span>
;</pre>
<p>Lo cual viene realmente bien para formar código bien indentado y formateado, pues aunque también podemos usar "\" para saltar de línea, el texto a continuación no puede estar indentado pues significaría incluir esos espacios/tabuladores en la cadena que estamos definiendo. Y lo realmente interesante es que todo esto está en la propia definición del lenguaje, no es ninguna ayuda concreta del compilador, a los ojos del programa todas las siguientes definiciones son idénticas:</p>
<pre class="cpp">&nbsp;
<span style="color: #339900;">#include &lt;string&gt;</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> * cmp<span style="color: #000000;">&#40;</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> *s1, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> *s2 <span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> * s1 = <span style="color: #666666;">&quot;My spoon is too big&quot;</span>
                      <span style="color: #666666;">&quot;My spoon is TOO BIG&quot;</span>
                      <span style="color: #666666;">&quot;I AM A BANANA&quot;</span>;
    <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> * s2 = <span style="color: #666666;">&quot;My spoon is too big<span style="color: #666666; font-weight: bold;">\</span>
My spoon is TOO BIG<span style="color: #666666; font-weight: bold;">\</span>
I AM A BANANA&quot;</span>;
    <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> * s3 = <span style="color: #000000;">&#40;</span> std::<span style="color: #00eeff;">string</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;My spoon is too big&quot;</span><span style="color: #000000;">&#41;</span> +
                        std::<span style="color: #00eeff;">string</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;My spoon is TOO BIG&quot;</span><span style="color: #000000;">&#41;</span> +
                        std::<span style="color: #00eeff;">string</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;I AM A BANANA&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#41;</span>.<span style="color: #00eeff;">c_str</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
    std::<span style="color: #0000dd;">cout</span> &lt;&lt; <span style="color: #666666;">&quot;s1 and s2 are &quot;</span> &lt;&lt; cmp<span style="color: #000000;">&#40;</span> s1, s2 <span style="color: #000000;">&#41;</span> &lt;&lt; std::<span style="color: #00eeff;">endl</span>;
    std::<span style="color: #0000dd;">cout</span> &lt;&lt; <span style="color: #666666;">&quot;s1 and s3 are &quot;</span> &lt;&lt; cmp<span style="color: #000000;">&#40;</span> s1, s3 <span style="color: #000000;">&#41;</span> &lt;&lt; std::<span style="color: #00eeff;">endl</span>;
    std::<span style="color: #0000dd;">cout</span> &lt;&lt; <span style="color: #666666;">&quot;s2 and s3 are &quot;</span> &lt;&lt; cmp<span style="color: #000000;">&#40;</span> s2, s3 <span style="color: #000000;">&#41;</span> &lt;&lt; std::<span style="color: #00eeff;">endl</span>;
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> * cmp<span style="color: #000000;">&#40;</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> *s1, <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> *s2 <span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#123;</span>
    <span style="color: #0000ff;">while</span><span style="color: #000000;">&#40;</span> *s1 &amp;&amp; *s2 &amp;&amp; *s1++ == *s2++ <span style="color: #000000;">&#41;</span>;
    <span style="color: #0000ff;">if</span> <span style="color: #000000;">&#40;</span> <span style="color: #000000;">&#40;</span> *s1 != *s2 <span style="color: #000000;">&#41;</span> || <span style="color: #000000;">&#40;</span> *s1 || *s2 <span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#41;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #666666;">&quot;different&quot;</span>;
    <span style="color: #0000ff;">return</span> <span style="color: #666666;">&quot;equal&quot;</span>;
<span style="color: #000000;">&#125;</span></pre>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">c++</span> const_char_declaration_sample.<span style="color: #c20cb9; font-weight: bold;">cpp</span> &amp;&amp; ./a.out
s1 and s2 are equal
s1 and s3 are equal
s2 and s3 are equal</pre>
<img src="http://bicosyes.com/?ak_action=api_record_view&id=846&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://bicosyes.com/c-cadenas-multilinea-de-forma-clara/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

