<?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[konstanter String]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">char* x=&quot;Mein String&quot;;
</code></pre>
<pre><code class="language-cpp">x[0]='A'
</code></pre>
<p>//Zugriffsverletzung beim Schreiben</p>
<p>Hat es einen Grund warum der String constant ist ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285977/konstanter-string</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 03:34:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285977.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 May 2011 09:10:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:10:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">char* x=&quot;Mein String&quot;;
</code></pre>
<pre><code class="language-cpp">x[0]='A'
</code></pre>
<p>//Zugriffsverletzung beim Schreiben</p>
<p>Hat es einen Grund warum der String constant ist ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056699</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 01 May 2011 09:10:31 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:17:13 GMT]]></title><description><![CDATA[<p>Literale sind immer konstant! Das String-Literale implizit in ein <code>char*</code> umgewandelt werden, ist leider eines dieser hässlichen C-Erbstücke. Wenn du die Warnungen bei deinem Compiler aktivierst, dann sollte er dich aber auf das Problem hinweisen.</p>
<p>Wenn du eine Kopie haben willst, die du bearbeiten kannst, dann mach</p>
<pre><code class="language-cpp">char x[] = &quot;Mein String&quot;;
x[0] = 'A';
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2056701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056701</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sun, 01 May 2011 09:17:13 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:17:14 GMT]]></title><description><![CDATA[<p>String-Literale werden vom Compiler in einem schreibgeschützten Speicherbereich abgelegt - auch wegen der dadurch möglichen Optimierungen. Und die meisten Compiler sollten auch eine Warnung ausgeben, daß die Zuweisung zu einem nicht-konstanten char-Zeiger Probleme bringt.</p>
<p>PS: mit <code>char x[]=&quot;Mein String&quot;;</code> oder <code>string x=&quot;Mein String&quot;;</code> hättest du keine Probleme bekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056702</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 01 May 2011 09:17:14 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:39:54 GMT]]></title><description><![CDATA[<p>Wieso bekomme ich unten einen fehler ?</p>
<pre><code class="language-cpp">void commentdelete(char x[])
{
   int i,j;
   char tmp=new char[strlen(x)];

   for(i=0;x[i]!=0;i++) tmp[i]=x[i];
   tmp[i]=0;

   for(i=0,j=0;tmp[i]!=0;i++,j++)
   {

	   x[j]=tmp[i];  // hier Zugriffsverletzung

   }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2056705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056705</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 01 May 2011 09:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:42:22 GMT]]></title><description><![CDATA[<p>Erstens dürfte schon die Zeile 7 Probleme bereitet haben, weil du keinen Speicherplatz für den Null-Terminator bereitgestellt hast.<br />
Zweitens: Was hast du denn dieser Funktion übergeben? Bei der Angabe von Parametertypen ist &quot;char x[]&quot; und &quot;char* x&quot; gleichbedeutend.<br />
Und drittens: Du solltest dir angewöhnen, mit std::string zu arbeiten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>(gehe ich recht in der Annahme, daß der Autor deines Leerbuches die Initialien J.W. hat?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056707</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 01 May 2011 09:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:48:27 GMT]]></title><description><![CDATA[<p>Aber wie soll ich denn den String übergeben ?</p>
<p>PS: nee das Lehrbuch ist nicht von Jürgen Wolf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> (Quelle : amazon )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056714</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 01 May 2011 09:48:27 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 09:56:38 GMT]]></title><description><![CDATA[<p>Na wie schon, als string natürlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">void commentdelete(std::string&amp; x)
{
  ...
}
</code></pre>
<p>(mit der String-Klasse solltest du dich sowieso intensiver beschäftigen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056716</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 01 May 2011 09:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:10:30 GMT]]></title><description><![CDATA[<p>ich will aber ein char array verwenden denn in C gibt es ja kein string</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056721</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 01 May 2011 10:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:11:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char tmp = new char[strlen(x)];
</code></pre>
<p>Das compiled bei dir ? :o</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056722</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Sun, 01 May 2011 10:11:58 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:12:55 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>ich will aber ein char array verwenden denn in C gibt es ja kein string</p>
</blockquote>
<p>Du postest hier aber im C++ forum und nicht im C-Forum....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056723</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Sun, 01 May 2011 10:12:55 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:20:00 GMT]]></title><description><![CDATA[<p>cvcv schrieb:</p>
<blockquote>
<p>blurry333 schrieb:</p>
<blockquote>
<p>ich will aber ein char array verwenden denn in C gibt es ja kein string</p>
</blockquote>
<p>Du postest hier aber im C++ forum und nicht im C-Forum....</p>
</blockquote>
<p>In C gibt es auch kein new <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056724</guid><dc:creator><![CDATA[kjhk]]></dc:creator><pubDate>Sun, 01 May 2011 10:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:22:16 GMT]]></title><description><![CDATA[<p>kjhk schrieb:</p>
<blockquote>
<p>cvcv schrieb:</p>
<blockquote>
<p>blurry333 schrieb:</p>
<blockquote>
<p>ich will aber ein char array verwenden denn in C gibt es ja kein string</p>
</blockquote>
<p>Du postest hier aber im C++ forum und nicht im C-Forum....</p>
</blockquote>
<p>In C gibt es auch kein new <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>True ^^ Aber zumindestens ein Äuqivalent. Naja, solange man keine Klassen mit benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056725</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Sun, 01 May 2011 10:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:31:03 GMT]]></title><description><![CDATA[<p>ich muss einfach einen nicht konstanten String im main übergeben</p>
<pre><code class="language-cpp">char x[100]; int i;
char* tmp=&quot;Das ist /*ein Kommentar*/ ein Hund&quot;;

for( i=0;tmp[i];i++) x[i]=tmp[i];
x[i]=0;
</code></pre>
<p>Wie kann man denn noch einen non constant string anlegen ?<br />
Ich muss ja erst in einer Schleife alles rüberkopieren.<br />
Das ist mir zu aufwändig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056726</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 01 May 2011 10:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:32:24 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>ich muss einfach einen nicht konstanten STring im main übergeben</p>
<pre><code class="language-cpp">char x[100]; int i;
char* tmp=&quot;Das ist /*ein Kommentar*/ ein Hund&quot;;

for( i=0;tmp[i];i++) x[i]=tmp[i];
x[i]=0;
</code></pre>
</blockquote>
<p>Wieso deklarierst du i nicht um <code>for</code> -Kopf? Und Kommentare innerhalb von Strings gibt es nicht. Und die Schleife kann man gut durch <code>strcpy</code> ersetzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056729</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 01 May 2011 10:32:24 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:36:21 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>blurry333 schrieb:</p>
<blockquote>
<p>ich muss einfach einen nicht konstanten STring im main übergeben</p>
<pre><code class="language-cpp">char x[100]; int i;
char* tmp=&quot;Das ist /*ein Kommentar*/ ein Hund&quot;;

for( i=0;tmp[i];i++) x[i]=tmp[i];
x[i]=0;
</code></pre>
</blockquote>
<p>Wieso deklarierst du i nicht um <code>for</code> -Kopf? Und Kommentare innerhalb von Strings gibt es nicht. Und die Schleife kann man gut durch <code>strcpy</code> ersetzen...</p>
</blockquote>
<p>Weil er anscheinend in C programmieren will und da muss man Variablen in der Regel am Blockanfang deklarieren.</p>
<p>Wenn wir uns schon auf C-Niveau befinden:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

int main()
{
	char x[100];

	const char *tmp=&quot;Das ist /*ein Kommentar*/ ein Hund&quot;; 

	strcpy(x, tmp);

	printf(&quot;%s\n&quot;, x);
}
</code></pre>
<p>Und was hast du davon? Nichts. Lern lieber C++...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056730</guid><dc:creator><![CDATA[klöklö]]></dc:creator><pubDate>Sun, 01 May 2011 10:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:39:50 GMT]]></title><description><![CDATA[<p>In C++:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
int main()
{
  std::string foo(&quot;Ich bin ein Text&quot;);
  std::string bar(foo + &quot;, den man mit c_str in einen CString umwandeln kann&quot;);
}
</code></pre>
<p>Sieht doch logischer und schöner aus, nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056731</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 01 May 2011 10:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 11:03:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string.h&gt;

int main()
{
    const char* const_string = &quot;Hallo&quot;;    
    char non_const_string[30];

    strcpy(non_const_string,const_string);

    non_const_string[1] = 'e';

    return 0;
}
</code></pre>
<p>[Edit] editiert nach EOutOfResources' Hinweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056735</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 01 May 2011 11:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:47:29 GMT]]></title><description><![CDATA[<p>Gugelmoser schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;string.h&gt;

int main()
{
    const char* const_string = &quot;Hallo&quot;;
    const int size = strlen(const_string) +1;
    
    char non_const_string[size];
    strcpy(non_const_string,const_string);
    
    non_const_string[1] = 'e';
    
    return 0;
}
</code></pre>
</blockquote>
<p>Du denkst, dass <code>strlen</code>  <code>constexpr</code> aus C++0x drauf hat, aber leider nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056736</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 01 May 2011 10:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:48:06 GMT]]></title><description><![CDATA[<p>Oder wenn es ein Array sein muss...</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

int main()
{
	std::string tmp= &quot;Das ist /*ein Kommentar*/ ein Hund&quot;;

	std::vector&lt;char&gt; x(tmp.begin(), tmp.end());

	x.push_back(0); // std::string hat keine Nullterminierung, also manuell eine anfügen

	std::cout &lt;&lt; &amp;x[0] &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

int main()
{
	const char *tmp= &quot;Das ist /*ein Kommentar*/ ein Hund&quot;;

	std::vector&lt;char&gt; x(tmp, tmp + strlen(tmp));

	x.push_back(0); // Alternativ + 1 bei zweiten Parameter oben

	std::cout &lt;&lt; &amp;x[0] &lt;&lt; std::endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2056737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056737</guid><dc:creator><![CDATA[kjljkl]]></dc:creator><pubDate>Sun, 01 May 2011 10:48:06 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:49:08 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Gugelmoser schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;string.h&gt;

int main()
{
    const char* const_string = &quot;Hallo&quot;;
    const int size = strlen(const_string) +1;
    
    char non_const_string[size];
    strcpy(non_const_string,const_string);
    
    non_const_string[1] = 'e';
    
    return 0;
}
</code></pre>
</blockquote>
<p>Du denkst, dass <code>strlen</code>  <code>constexpr</code> aus C++0x drauf hat, aber leider nicht...</p>
</blockquote>
<p>Das ist zumindest ein Feature, welches der GCC beherrscht. Der VC tut es eher nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056738</guid><dc:creator><![CDATA[kjljkl]]></dc:creator><pubDate>Sun, 01 May 2011 10:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:50:57 GMT]]></title><description><![CDATA[<p>kjljkl schrieb:</p>
<blockquote>
<p>Das ist zumindest ein Feature, welches der GCC beherrscht. Der VC tut es eher nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Was ich damit sagen wollte, ist dass der Code nicht laufen sollte, da der Rückgabewert von <code>strlen</code> noch nicht zur Compilezeit bekannt ist. Das ist bei einem Array auf dem Stack notwendig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056739</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 01 May 2011 10:50:57 GMT</pubDate></item><item><title><![CDATA[Reply to konstanter String on Sun, 01 May 2011 10:57:25 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>kjljkl schrieb:</p>
<blockquote>
<p>Das ist zumindest ein Feature, welches der GCC beherrscht. Der VC tut es eher nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Was ich damit sagen wollte, ist dass der Code nicht laufen sollte, da der Rückgabewert von <code>strlen</code> noch nicht zur Compilezeit bekannt ist. Das ist bei einem Array auf dem Stack notwendig.</p>
</blockquote>
<p>Stimmt, du hast natürlich recht, die Arraygröße muss hierbei eine Compiletime-Konstante sein, und bei mir war es eine Laufzeitkonstante.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056742</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 01 May 2011 10:57:25 GMT</pubDate></item></channel></rss>