<?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[Komische Effekte mit vector]]></title><description><![CDATA[<p>Moin Moin ...<br />
Ich bin neu hier weiß deshalb nicht ganz ob ich im richtigen Forum bin.<br />
Aber da ich unter Linux arbeite und hier sonst kein gcc spezifisches Forum sehe,<br />
denk ich mal das ich hier zumindest nicht ganz falsch bin.</p>
<p>Also erstmal mein Quelltext:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;vector&gt;

using namespace std;

vector&lt;char*&gt; stuff;

void addstring(char *str) {

	char *str2;
	str2 = new char[strlen(str)];

	strcpy(str2,str);

	printf(&quot;before : '%s' length : %d\n&quot;,str2,strlen(str2));
	stuff.push_back(str2);
	printf(&quot;after : '%s'  length : %d\n&quot;,
		stuff.at(stuff.size()-1),
		strlen(stuff.at(stuff.size()-1)));
}

int main() {

addstring(&quot;some_stuff123456789&quot;); // after ... length : 19
addstring(&quot;some_stuff1234567890&quot;); // after ... length : 21 -&gt; should be 20.	
addstring(&quot;some_stuff12345678901&quot;); // after ... length : 21 

return 0;
}
</code></pre>
<p>Das ganze is eigentlich in einem größeren Projekt von mir drin,<br />
aber ich hab es auf das Wesentliche beschenkt, was ich brauche um das Problem zu reproduzieren.</p>
<p>Wenn ich das ganze compiliere und laufen lasse bekomme ich diese Ausgabe :</p>
<pre><code>before : 'some_stuff123456789' lenght : 19
after : 'some_stuff123456789'  lenght : 19
before : 'some_stuff1234567890' lenght : 20
after : 'some_stuff1234567890'  lenght : 21
before : 'some_stuff12345678901' lenght : 21
after : 'some_stuff12345678901'  lenght : 21
</code></pre>
<p>Man beachte den Längenunterschied des Strings in Zeile 3 und 4.<br />
Irgendwie ist der C-string im Vektor um ein Zeichen länger. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Aber das kann irgendwie nicht sein, weil ja beides Pointer auf die selbe<br />
Stelle sind.</p>
<p>Oder bin ich da jetzt komplett auf dem falschen Dampfer ?</p>
<p>Jedenfalls hab ich jetzt schon ein-zwei Jahre Programmiererfahrung,<br />
aber sowas ist mir bis jetzt noch nicht unter gekommen.<br />
Vor allem es geht auch bei kürzeren und längeren Strings, ohne Probleme.<br />
Bloß genau 20 Zeichen machen mir Ärger. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Falls das ein bug in der vector-Klasse ist, wie und wem sollte man das melden ?</p>
<p>Vielen Dank im Vorraus<br />
lhh</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229506/komische-effekte-mit-vector</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 20:15:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229506.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Dec 2008 18:39:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komische Effekte mit vector on Fri, 12 Dec 2008 18:39:05 GMT]]></title><description><![CDATA[<p>Moin Moin ...<br />
Ich bin neu hier weiß deshalb nicht ganz ob ich im richtigen Forum bin.<br />
Aber da ich unter Linux arbeite und hier sonst kein gcc spezifisches Forum sehe,<br />
denk ich mal das ich hier zumindest nicht ganz falsch bin.</p>
<p>Also erstmal mein Quelltext:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;vector&gt;

using namespace std;

vector&lt;char*&gt; stuff;

void addstring(char *str) {

	char *str2;
	str2 = new char[strlen(str)];

	strcpy(str2,str);

	printf(&quot;before : '%s' length : %d\n&quot;,str2,strlen(str2));
	stuff.push_back(str2);
	printf(&quot;after : '%s'  length : %d\n&quot;,
		stuff.at(stuff.size()-1),
		strlen(stuff.at(stuff.size()-1)));
}

int main() {

addstring(&quot;some_stuff123456789&quot;); // after ... length : 19
addstring(&quot;some_stuff1234567890&quot;); // after ... length : 21 -&gt; should be 20.	
addstring(&quot;some_stuff12345678901&quot;); // after ... length : 21 

return 0;
}
</code></pre>
<p>Das ganze is eigentlich in einem größeren Projekt von mir drin,<br />
aber ich hab es auf das Wesentliche beschenkt, was ich brauche um das Problem zu reproduzieren.</p>
<p>Wenn ich das ganze compiliere und laufen lasse bekomme ich diese Ausgabe :</p>
<pre><code>before : 'some_stuff123456789' lenght : 19
after : 'some_stuff123456789'  lenght : 19
before : 'some_stuff1234567890' lenght : 20
after : 'some_stuff1234567890'  lenght : 21
before : 'some_stuff12345678901' lenght : 21
after : 'some_stuff12345678901'  lenght : 21
</code></pre>
<p>Man beachte den Längenunterschied des Strings in Zeile 3 und 4.<br />
Irgendwie ist der C-string im Vektor um ein Zeichen länger. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Aber das kann irgendwie nicht sein, weil ja beides Pointer auf die selbe<br />
Stelle sind.</p>
<p>Oder bin ich da jetzt komplett auf dem falschen Dampfer ?</p>
<p>Jedenfalls hab ich jetzt schon ein-zwei Jahre Programmiererfahrung,<br />
aber sowas ist mir bis jetzt noch nicht unter gekommen.<br />
Vor allem es geht auch bei kürzeren und längeren Strings, ohne Probleme.<br />
Bloß genau 20 Zeichen machen mir Ärger. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Falls das ein bug in der vector-Klasse ist, wie und wem sollte man das melden ?</p>
<p>Vielen Dank im Vorraus<br />
lhh</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629635</guid><dc:creator><![CDATA[LongHairedHacker]]></dc:creator><pubDate>Fri, 12 Dec 2008 18:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Effekte mit vector on Fri, 12 Dec 2008 18:49:20 GMT]]></title><description><![CDATA[<p>Also, ich hätte Dir gerne geholfen, aber die Ausgabe bei mir lautet:</p>
<pre><code>before : 'some_stuff123456789' length : 19
after : 'some_stuff123456789'  length : 19
before : 'some_stuff1234567890' length : 20
after : 'some_stuff1234567890'  length : 20
before : 'some_stuff12345678901' length : 21
after : 'some_stuff12345678901'  length : 21
</code></pre>
<p>Ich habe den gcc 3.4.2, aber die Mingw-Version. Ich habe grad keine Lust Linux zu starten.</p>
<p>Allerdings ist das hier glaube ich nicht richtig:</p>
<pre><code class="language-cpp">str2 = new char[strlen(str)];
</code></pre>
<p>Es muss glaube ich so heißen, damit die '\0' noch reinpasst:</p>
<pre><code class="language-cpp">str2 = new char[strlen(str)+1];
</code></pre>
<p>Das könnte der Grund sein.</p>
<p>Ach, und, warum eigentlich nicht std::string? Dann sparst Du Dir den Ärger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629645</guid><dc:creator><![CDATA[Wirdbald]]></dc:creator><pubDate>Fri, 12 Dec 2008 18:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Effekte mit vector on Fri, 12 Dec 2008 19:03:50 GMT]]></title><description><![CDATA[<p>Okay dann erstmal danke für die schnelle Hilfe.</p>
<p>Also das mit dem /0 hab ich kurz nach dem ich hier gepostet hab gemerkt.<br />
Hab ich wohl gepennt, wie üblich <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="😃"
    /><br />
Peinlich Peinlich ...</p>
<p>Naja mit +1 scheint es zu klappen.<br />
Wahr wohl Glück, dass es sonst ohne geklappt hat und kein segfault kam.</p>
<p>Vielen Dank#<br />
LHH</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629653</guid><dc:creator><![CDATA[LongHairedHacker]]></dc:creator><pubDate>Fri, 12 Dec 2008 19:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Effekte mit vector on Sat, 13 Dec 2008 12:02:20 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-4178.html" rel="nofollow">nman</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-5.html" rel="nofollow">Linux/Unix</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629892</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 13 Dec 2008 12:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Effekte mit vector on Sat, 13 Dec 2008 14:48:53 GMT]]></title><description><![CDATA[<p>LongHairedHacker schrieb:</p>
<blockquote>
<p>...</p>
<pre><code>lenght
</code></pre>
<p>...</p>
</blockquote>
<p>und ich dachte immer schon, ich sei der Einzige, der immer diesen Fehler macht... <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629941</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 13 Dec 2008 14:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Effekte mit vector on Sat, 13 Dec 2008 17:31:24 GMT]]></title><description><![CDATA[<p>um das letzte element eines vectors zu ermitteln gibt es die memberfunktion vector::back() (oder so änhlich.<br />
Und wie gesagt, würde ich std::strings benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630046</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Sat, 13 Dec 2008 17:31:24 GMT</pubDate></item></channel></rss>