<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[const char* Vergleiche]]></title><description><![CDATA[<p>Abend,</p>
<p>2 kleine Fragen zu einem const char* s;</p>
<p>1. Wie setze ich den am besten auf einen Nullstring. Per s = 0; oder per s = &quot;&quot;;?<br />
2. Wie prüfe ich am besten s auf Nullstring? per s != &quot;&quot; oder s != 0 oder !strcmp(s, &quot;&quot;); ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287820/const-char-vergleiche</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 06:57:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287820.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Jun 2011 19:38:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const char* Vergleiche on Sat, 04 Jun 2011 19:38:49 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>2 kleine Fragen zu einem const char* s;</p>
<p>1. Wie setze ich den am besten auf einen Nullstring. Per s = 0; oder per s = &quot;&quot;;?<br />
2. Wie prüfe ich am besten s auf Nullstring? per s != &quot;&quot; oder s != 0 oder !strcmp(s, &quot;&quot;); ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073405</guid><dc:creator><![CDATA[Vergleicher2]]></dc:creator><pubDate>Sat, 04 Jun 2011 19:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to const char* Vergleiche on Sat, 04 Jun 2011 19:48:42 GMT]]></title><description><![CDATA[<p>Erstens: Es gibt einen Unterschied zwischen Null-String (s=NULL) und leerem String (s=&quot;&quot; bzw. *s='\0'). Je nachdem, was du erreichen willst, können beide Varianten Sinn machen.</p>
<p>Zweitens: s!=&quot;&quot; liefert meistens nicht das, was du benötigst, s!=NULL vergleicht mit dem Null-String, strcmp(s,&quot;&quot;) oder *s!='\0' vergleicht mit dem leeren String.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073409</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Jun 2011 19:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to const char* Vergleiche on Sat, 04 Jun 2011 19:50:15 GMT]]></title><description><![CDATA[<p>Zudem gibt es in C++ auch <code>std::string</code> s. Bei denen musst du dich so etwas gar nicht mehr fragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073411</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sat, 04 Jun 2011 19:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to const char* Vergleiche on Sat, 04 Jun 2011 20:49:43 GMT]]></title><description><![CDATA[<p>Ich mach das mal etwas ausführlicher. Bei einem C-String gibt es zwei Möglichkeiten ihn &quot;leer&quot; zu setzen.</p>
<p>Da es sich um einen Zeiger handelt, ist es möglich den Zeiger selber auf 0 zu setzen</p>
<p><code>s = 0</code></p>
<p>Es kann auch entsprechend abgefragt werden ob der Zeiger gültig ist</p>
<p><code>s == 0</code></p>
<p>Dann gibt es noch die Möglichkeit den Inhalt des Strings selber zu testen</p>
<p><code>*s == 0</code></p>
<p>C-Strings werden immer mit einer 0 beendet. Mit der Abfrage oben wird nur getestet ob das erste Zeichen den Binären Wert 0 hat (Nicht den Wert für das ZEICHEN 0 !). Das bedeutet das s auf einen C-String zeigt, dieser aber leer ist.</p>
<p>Zuerst muss man immer testen ob der Zeiger selber 0 ist, sonst greift man bei *s auf undefinierten Speicher zu.</p>
<p>Bei const char * s den String selber auf leer zu setzen geht garnicht, da durch das const der String (also der Inhalt) ja Konstant ist und entsprechend nicht manipuliert werden darf. <code>s = 0</code> geht dagegen weil der Pointer selber nicht const ist. Diese doppelte Möglichkeit von const bei Zeigern ist sehr verwirrend.</p>
<p>Ein klassischer Test auf einen Leersting sieht so aus:</p>
<pre><code class="language-cpp">if((s==0) || (*s==0))
{
    ...
}
</code></pre>
<p>Zuerst wird getestet ob der Zeiger überhaupt auf etwas zeigt, dann ob es überhaupt Zeichen enthält.</p>
<p>const char * s kann man auf einen Nullstring setzen. man kann ihn auch mit s = &quot;&quot; auf einen Leerstring zeigen lassen, das ist aber in den meisten Fällen nicht das was man erreichen will. Da kommt es auf den konkreten Fall an.</p>
<p>An besten ist aber immer noch der Tip von EOutOfResources : std::string!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073436</guid><dc:creator><![CDATA[tunichtgut]]></dc:creator><pubDate>Sat, 04 Jun 2011 20:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to const char* Vergleiche on Sun, 05 Jun 2011 09:19:15 GMT]]></title><description><![CDATA[<p>Was ist überhaupt ein &quot;Nullstring&quot;?</p>
<p>Es sieht mir danach aus, als ob Du (Vergleicher2) nicht wirklich verstehst, was &quot;const char*&quot; für ein Typ ist. Es handelt sich hierbei um einen Zeiger -- <em>nicht</em> um eine String-Variable, die Zeichenketten speichert, so wie zB eine int-Variable Ganzzahlen speichert.</p>
<p>Wenn Dir Das Zeiger-Konzept noch zu hoch ist (aber auch sonst) würde ich Dir empfehlen, die Verwendung von std::string vorzuziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073499</guid><dc:creator><![CDATA[laleludols]]></dc:creator><pubDate>Sun, 05 Jun 2011 09:19:15 GMT</pubDate></item></channel></rss>