<?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[String(Char)Pointer in Array speichern?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Folgendes ich hab einen string und von diesen string möchte ich die einzelnen Buchstaben in ein ein array speichern und zwar nur als pointer!</p>
<p>Beispielcode:</p>
<pre><code class="language-cpp">char* test_array[10][10];
std::string test_string = &quot;abcd&quot;;

test_array[0][0]= &amp;test_string[0];//abcd 
test_array[0][1]= &amp;test_string[1];//ghl 
test_array[0][2]= &amp;test_string[2];//cd
test_array[0][3]= &amp;test_string[3];//d
</code></pre>
<p>Wie bekomme ich die Pointer nur von einen Buchstaben hin? Also das in test_array[0][0] der Pointer auf a steht und in test_array[0][1] der Pointer auf b steht usw. ?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249569/string-char-pointer-in-array-speichern</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 11:10:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249569.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Sep 2009 09:44:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 09:44:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Folgendes ich hab einen string und von diesen string möchte ich die einzelnen Buchstaben in ein ein array speichern und zwar nur als pointer!</p>
<p>Beispielcode:</p>
<pre><code class="language-cpp">char* test_array[10][10];
std::string test_string = &quot;abcd&quot;;

test_array[0][0]= &amp;test_string[0];//abcd 
test_array[0][1]= &amp;test_string[1];//ghl 
test_array[0][2]= &amp;test_string[2];//cd
test_array[0][3]= &amp;test_string[3];//d
</code></pre>
<p>Wie bekomme ich die Pointer nur von einen Buchstaben hin? Also das in test_array[0][0] der Pointer auf a steht und in test_array[0][1] der Pointer auf b steht usw. ?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775094</guid><dc:creator><![CDATA[String_]]></dc:creator><pubDate>Wed, 09 Sep 2009 09:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 09:57:19 GMT]]></title><description><![CDATA[<p>String_ schrieb:</p>
<blockquote>
<p>Folgendes ich hab einen string und von diesen string möchte ich die einzelnen Buchstaben in ein ein array speichern und zwar nur als pointer!</p>
</blockquote>
<p>Na, entweder speicherst Du das Zeichen direkt oder Du speicherst einen Zegier auf das Zeichen. &quot;Buchstaben als Pointer speichern&quot; würde ich nicht sagen.</p>
<p>String_ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char* test_array[10][10];
std::string test_string = &quot;abcd&quot;;

test_array[0][0]= &amp;test_string[0];//abcd 
test_array[0][1]= &amp;test_string[1];//ghl 
test_array[0][2]= &amp;test_string[2];//cd
test_array[0][3]= &amp;test_string[3];//d
</code></pre>
<p>Wie bekomme ich die Pointer nur von einen Buchstaben hin? Also das in test_array[0][0] der Pointer auf a steht und in test_array[0][1] der Pointer auf b steht usw. ?</p>
</blockquote>
<p>Du <em>hast bereits</em> Zeiger auf einzelne Zeichen. Was sollen die Kommentare?</p>
<p>Versuch mal zu erklären, warum Du das machst. Ich habe das Gefühlt, dass Du C-Zeichenketten, std::string und Zeiger noch nicht 100%ig verstanden hast.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775101</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 09 Sep 2009 09:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 10:03:21 GMT]]></title><description><![CDATA[<p>Ok stimmt ich meinte Zeiger auf Zeichen!</p>
<p>Also die Kommentare sollen das zeigen was sie ausgegeben wird!</p>
<pre><code class="language-cpp">cout&lt;&lt;test_array[0][0]&lt;&lt;endl;//abcd
  cout&lt;&lt;test_array[0][1]&lt;&lt;endl;//bcd
  cout&lt;&lt;test_array[0][2]&lt;&lt;endl;//cd
</code></pre>
<p>Es werden hierbei nicht die einzelnen Buchstaben ausgegeben sondern halt wie bei den Kommentar!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775105</guid><dc:creator><![CDATA[String_]]></dc:creator><pubDate>Wed, 09 Sep 2009 10:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 10:50:49 GMT]]></title><description><![CDATA[<p>String_ schrieb:</p>
<blockquote>
<p>Ok stimmt ich meinte Zeiger auf Zeichen!</p>
<p>Also die Kommentare sollen das zeigen was sie ausgegeben wird!</p>
<pre><code class="language-cpp">cout&lt;&lt;test_array[0][0]&lt;&lt;endl;//abcd
  cout&lt;&lt;test_array[0][1]&lt;&lt;endl;//bcd
  cout&lt;&lt;test_array[0][2]&lt;&lt;endl;//cd
</code></pre>
<p>Es werden hierbei nicht die einzelnen Buchstaben ausgegeben sondern halt wie bei den Kommentar!</p>
</blockquote>
<p>Das liegt daran, dass char* von ostream::operator&lt;&lt; als Zeichenketten behandelt werden. Willst du einzelne zeichen, musst du nochmals dereferenzieren.</p>
<p>P.S: Und du hast Glück, dass der std::string bei dir anscheinend nullterminiert ist, eigentlich würde bei deinem Code der gesamte Speicher bis zum nächsten Nullzeichen ausgegeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775147</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 09 Sep 2009 10:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 10:56:23 GMT]]></title><description><![CDATA[<p>String_ schrieb:</p>
<blockquote>
<p>Also die Kommentare sollen das zeigen was sie ausgegeben wird!</p>
<pre><code class="language-cpp">cout&lt;&lt;test_array[0][0]&lt;&lt;endl;//abcd  
  cout&lt;&lt;test_array[0][1]&lt;&lt;endl;//bcd
  cout&lt;&lt;test_array[0][2]&lt;&lt;endl;//cd
</code></pre>
<p>Es werden hierbei nicht die einzelnen Buchstaben ausgegeben sondern halt wie bei den Kommentar!</p>
</blockquote>
<p>Du hast sogar Glück, dass da überhaupt etwas halbwegs sinvolles rauskommt. Soweit ich weiß, garantiert std::string nicht, dass die Zeichen hintereinander im Speicher angeordnet sind und auch nicht, dass es eine Null-Terminierung gibt.</p>
<p>test_array[0][0] ist vom Typ char* ist und operator&lt;&lt;(ostream&amp;,char*) ist dazu da, eine nullterminierte C-Zeichenkette auszugeben. Das erklärt Deine Beobachtung. Du hast das Dereferenzieren der Zeiger vergessen:</p>
<pre><code class="language-cpp">cout&lt;&lt; *test_array[0][0] &lt;&lt;endl; // a
  cout&lt;&lt; *test_array[0][1] &lt;&lt;endl; // b
  cout&lt;&lt; *test_array[0][2] &lt;&lt;endl; // c
</code></pre>
<p>Tipp: Je weniger Du von Deinem Problem verrätst, was Du lösen willst, desto weniger kann Dir geholfen werden. Es ist offensichtlich, dass Du mit dem Umgang von C-Zeichenketten, std::string und Zeigern nicht sicher bist. Ich halte es daher für sehr wahrscheinlich, dass Du das, was du <em>eigentlich</em> erreichen willst, viel zu umständlich angehst.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775153</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 09 Sep 2009 10:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 12:05:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Also erstmal danke für die schnellen Antworten!<br />
Soweit ich weiß ist bei std::string immer eine Null terminierung aber ich kann mich auch täuschen.</p>
<p>Mir war nur nicht klar warum es zu diesen Output kam, jetzt is es mir klar!<br />
Grundsätzlich wollte ich folgendes machen:</p>
<p>Das test_array[höhe][breite] sollte ein Spielfeld darstellen, und in diesem Array sollen dann die Pointer von den Buchstaben gesetzt werden.<br />
Diese Buchstaben sollen eine Spielfigure ergeben.<br />
Aber da meine Spielfiguren sowieso aus einen Buchstaben bestehen, werde ich char[2] Array(Buchstabe+ Null) verwenden.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775206</guid><dc:creator><![CDATA[String_]]></dc:creator><pubDate>Wed, 09 Sep 2009 12:05:06 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 12:06:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Soweit ich weiß ist bei std::string immer eine Null terminierung aber ich kann mich auch täuschen.</p>
</blockquote>
<p>Du täuschst dich.<br />
Nur bei der Memberfunktion c_str() ist das terminierende 0 garantiert.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775208</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 09 Sep 2009 12:06:10 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 12:20:20 GMT]]></title><description><![CDATA[<p>ok thx!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775222</guid><dc:creator><![CDATA[String_]]></dc:creator><pubDate>Wed, 09 Sep 2009 12:20:20 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 12:55:55 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<blockquote>
<p>Soweit ich weiß ist bei std::string immer eine Null terminierung aber ich kann mich auch täuschen.</p>
</blockquote>
<p>Du täuschst dich.<br />
Nur bei der Memberfunktion c_str() ist das terminierende 0 garantiert.<br />
Simon</p>
</blockquote>
<p>falsch, es ist auch beim <code>operator[] (size_type i) const</code> für i == size() garantiert, dass 0 zurückgegeben wird...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775249</guid><dc:creator><![CDATA[unskilled @logged-off]]></dc:creator><pubDate>Wed, 09 Sep 2009 12:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:01:50 GMT]]></title><description><![CDATA[<p>Und wie kann ich jetzt sicherstellen das mein string 0 Terminiert ist, ohne den string mittels c_str zu konvertieren?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775259</guid><dc:creator><![CDATA[String_]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:03:21 GMT]]></title><description><![CDATA[<p>1. wozu brauchst du das denn?<br />
2. hab ich doch gerade geschrieben, dass der op[] dieses verhalten in der const-Version erfüllt - in der non-const Version ist das Verhalten nicht definiert...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775260</guid><dc:creator><![CDATA[unskilled @logged-off]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:06:40 GMT]]></title><description><![CDATA[<p>String_ schrieb:</p>
<blockquote>
<p>Und wie kann ich jetzt sicherstellen das mein string 0 Terminiert ist, ohne den string mittels c_str zu konvertieren?</p>
</blockquote>
<p>Du musst das gar nicht sicherstellen. Wenn du einen C-String über <code>c_str()</code> holst, ist eine Nullterminierung garantiert. Und ausser für C-Strings brauchst du ja keine Nullterminierung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775263</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:06:40 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:07:47 GMT]]></title><description><![CDATA[<p>Nachtrag:</p>
<p>21.3.4 basic_string element access schrieb:</p>
<blockquote>
<p><code>const_reference operator[] (size_type pos) const;</code><br />
<code>reference operator[] (size_type pos);</code></p>
<p>Returns: If <code>pos &lt; size()</code> , returns <code>*(begin() + pos)</code> . Otherwise, if <code>pos == size()</code> , the const version returns <code>charT()</code> . Otherwise, the behavior is undefined.</p>
</blockquote>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775264</guid><dc:creator><![CDATA[unskilled @logged-off]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:07:47 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:09:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a>: habs auch gerade gesichtet im Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775267</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:11:03 GMT]]></title><description><![CDATA[<p>1.Wollte nur wissen ob es noch andere Möglichkeiten gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775269</guid><dc:creator><![CDATA[String_]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:15:55 GMT]]></title><description><![CDATA[<p>Warum legst Du <em>überhaupt</em> ein Array von Array von <em>Zeigern</em> an? Was bringen Dir die Zeiger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775275</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:15:55 GMT</pubDate></item><item><title><![CDATA[Reply to String(Char)Pointer in Array speichern? on Wed, 09 Sep 2009 13:19:23 GMT]]></title><description><![CDATA[<p>String_ schrieb:</p>
<blockquote>
<p>1.Wollte nur wissen ob es noch andere Möglichkeiten gibt.</p>
</blockquote>
<p>Also <code>c_str()</code> und <code>op[]</code> bietet dir das an...<br />
Außerdem gibt es aber noch viel bessere Wege, wo es ganz egal, ob der string so etwas wie ne Nullterminierung bietet:<br />
<code>const_iterator</code> / <code>iterator</code> , <code>begin</code> / <code>end</code> (bzw. die <code>reverse</code> -varianten, wenn du rückwärts gehen möchtest) - google-Stichwort hierzu wäre &quot;Iterator&quot;<br />
Und wenn du unbedingt mit indizes arbeiten möchtest, dann hättest du auch noch die Variante:</p>
<pre><code class="language-cpp">std::string my_string(&quot;asdkgasdjkadlkajsdlJ&quot;);
for(std:string::size_type i(0), e(my_string.size()); i != e; ++i)
{
  std::cout &lt;&lt; my_string[i]; //oder was auch immer du hier machen möchtest...
}
</code></pre>
<p>Aber jetzt sag doch bitte endlich mal, wieso du denkst, dass du das brauchst!? und wieso du allg. so komische Dinge machst^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1775279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1775279</guid><dc:creator><![CDATA[unskilled @logged-off]]></dc:creator><pubDate>Wed, 09 Sep 2009 13:19:23 GMT</pubDate></item></channel></rss>