<?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[Übung C++ Primer 4.34]]></title><description><![CDATA[<blockquote>
<p>Schreiben Sie ein Programm, das Strings in einen Vektor einliest.<br />
Kopieren Sie diesen Vektor in ein Array mit Zeichenzeigern. Weisen Sie für jedes Vektorelement ein neues Zeichenarray zu, in das Sie die Daten des Elements kopieren. Fügend Sie in das Array mit Zeichenzeiger einen Zeiger auf<br />
das Zeichenarray ein.</p>
</blockquote>
<p>Hier meine Umsetzung. (1. Problem: Ich weiß nicht mal ob ich die - meiner Meinung nach äußerst konfuse Fragestellung - richtig verstanden habe.)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
    string temp;
    vector&lt;string&gt; save;
    while(getline(cin, temp) and temp != &quot;-1&quot;)
    {
        save.push_back(temp);
    }

    char **p = new char * [save.size()];

    size_t i = 0;
    for(vector&lt;string&gt;::iterator iter = save.begin(); iter != save.end(); ++i,++iter)
    {
        p[i] = new char[(*iter).size() + 1];
        strcpy(p[i],(*iter).c_str());
    }

    for(size_t i = 0; i &lt; save.size(); ++i)
    {
        cout &lt;&lt; (p[i]) &lt;&lt; endl;
    }

    //Große DELETE Phase    //Wird hier korrekt gelöscht?
    for(size_t i = 0; i&lt;save.size(); ++i)
    {
        delete []p[i];
    }
    delete []p;

    return 0;
}
</code></pre>
<p>Eure Meinung? Wie hättet ihr das gemacht? Klappt da in meinem Zeiger &quot;Wirr-Warr&quot; alles?<br />
Ich bin halt davon ausgegangen, dass ich nicht weiß, wieviele Strings der Bentzer eingibt, sonst wäre es ja um einiges einfacher gewesen.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233766/übung-c-primer-4-34</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 17:55:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233766.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Feb 2009 23:03:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übung C++ Primer 4.34 on Sun, 08 Feb 2009 23:03:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Schreiben Sie ein Programm, das Strings in einen Vektor einliest.<br />
Kopieren Sie diesen Vektor in ein Array mit Zeichenzeigern. Weisen Sie für jedes Vektorelement ein neues Zeichenarray zu, in das Sie die Daten des Elements kopieren. Fügend Sie in das Array mit Zeichenzeiger einen Zeiger auf<br />
das Zeichenarray ein.</p>
</blockquote>
<p>Hier meine Umsetzung. (1. Problem: Ich weiß nicht mal ob ich die - meiner Meinung nach äußerst konfuse Fragestellung - richtig verstanden habe.)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
    string temp;
    vector&lt;string&gt; save;
    while(getline(cin, temp) and temp != &quot;-1&quot;)
    {
        save.push_back(temp);
    }

    char **p = new char * [save.size()];

    size_t i = 0;
    for(vector&lt;string&gt;::iterator iter = save.begin(); iter != save.end(); ++i,++iter)
    {
        p[i] = new char[(*iter).size() + 1];
        strcpy(p[i],(*iter).c_str());
    }

    for(size_t i = 0; i &lt; save.size(); ++i)
    {
        cout &lt;&lt; (p[i]) &lt;&lt; endl;
    }

    //Große DELETE Phase    //Wird hier korrekt gelöscht?
    for(size_t i = 0; i&lt;save.size(); ++i)
    {
        delete []p[i];
    }
    delete []p;

    return 0;
}
</code></pre>
<p>Eure Meinung? Wie hättet ihr das gemacht? Klappt da in meinem Zeiger &quot;Wirr-Warr&quot; alles?<br />
Ich bin halt davon ausgegangen, dass ich nicht weiß, wieviele Strings der Bentzer eingibt, sonst wäre es ja um einiges einfacher gewesen.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660245</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 08 Feb 2009 23:03:35 GMT</pubDate></item><item><title><![CDATA[Reply to Übung C++ Primer 4.34 on Mon, 09 Feb 2009 15:43:12 GMT]]></title><description><![CDATA[<p>Keiner lust mich zu verbessern?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660555</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 09 Feb 2009 15:43:12 GMT</pubDate></item><item><title><![CDATA[Reply to Übung C++ Primer 4.34 on Mon, 09 Feb 2009 17:33:10 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Keiner lust mich zu verbessern?</p>
</blockquote>
<p>Du musst verstehen, dass wir nicht immer Lust haben, deine Aufgaben zu korrigieren. <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="🙂"
    /></p>
<p>Aber ich bin jetzt mal nicht so. Im Grossen und Ganzen sollte dein Code so stimmen, mir ist kein Fehler aufgefallen. Auch wird der Speicher ordnungsgemäss freigegeben, nämlich <code>save.size()</code> mal die C-Strings und dann noch das ganze Array. Du musst einfach schauen, dass <code>save</code> gleich gross bleibt. Vielleicht einen <code>const</code> - <code>vector</code> anlegen und mit dem Rückgabewert einer Funktion initialisieren.</p>
<p>Gewisse Dinge könntest du einfacher machen. Zum Beispiel brauchst du in der Kopierschleife keine Iteratoren, nimm doch einfach den Index. <code>std::vector</code> hat ja einen []-Operator.</p>
<p>Wenn du <code>strcpy</code> verwendest, solltest du eigentlich noch <code>&lt;cstring&gt;</code> einbinden. Hier ist es zwar nicht so wichtig, aber vielleicht solltest du zur sichereren Variante <code>strncpy()</code> greifen. Oder gleich zu <code>std::copy()</code> . Oder viel besser gar nicht mit <code>char</code> s rumfrickeln. <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/1660632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660632</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 09 Feb 2009 17:33:10 GMT</pubDate></item></channel></rss>