<?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[Problem bei Vektorelementen]]></title><description><![CDATA[<p>Hallo,<br />
momentan bin ich bei der Übung 3.14 auf Seite 128 im C++ Primer vierte Auflage.<br />
Hier einmal die Aufgabenstellung:&quot;Lesen Sie Text in einen Vektor ein<br />
und speichern Sie jedes Wort der Eingabe als Vektorelement. Verwandeln Sie die<br />
Wörter in Großbuchstaben. Geben Sie die umgewandelten Elemente in Zeilen zu je acht Wörtern aus.&quot;</p>
<p>Das ist bei mir dabei herausgekommen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
    vector&lt;string&gt; word_vec;
    string text_str;
    getline(cin, text_str);

    for(string::size_type ix=0; ix &lt;= text_str.size(); ++ix)
    {
        int x=0;
        int f=0;
        if(!(isspace(text_str[f])))
        {
            word_vec[x].push_back(text_str[f]);
        }

        else if(isspace(text_str[f]))
        {
            ++x;
        }

        ++f;
    }

    return 0;
}
</code></pre>
<p>Der Code wird vom meinem Compiler g++ kompiliert. Nach der Eingabe des Textes<br />
meldet Windows das das Programm nicht mehr funktioniert.<br />
Also hab ich die Vektoren gegen arrays getauscht.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
    string word_vec[20]; //testweise 20
    string text_str;
    getline(cin, text_str);

    for(string::size_type ix=0; ix &lt;= text_str.size(); ++ix)
    {
        int x=0;
        int f=0;
        if(!(isspace(text_str[f])))
        {
            word_vec[x].push_back(text_str[f]);
        }

        else if(isspace(text_str[f]))
        {
            ++x;
        }

        ++f;
    }

    for(int i=0; i != 19; ++i)
    {
        cout &lt;&lt; word_vec[i] &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Hier meldet Windows keine Fehler aber cout gibt mir den Anfangsbuchstaben des<br />
strings aus. Was hab ich falch gemacht ? Vielen Dank schonmal im Voraus. <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/topic/311248/problem-bei-vektorelementen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:32:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311248.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2012 16:55:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 16:55:16 GMT]]></title><description><![CDATA[<p>Hallo,<br />
momentan bin ich bei der Übung 3.14 auf Seite 128 im C++ Primer vierte Auflage.<br />
Hier einmal die Aufgabenstellung:&quot;Lesen Sie Text in einen Vektor ein<br />
und speichern Sie jedes Wort der Eingabe als Vektorelement. Verwandeln Sie die<br />
Wörter in Großbuchstaben. Geben Sie die umgewandelten Elemente in Zeilen zu je acht Wörtern aus.&quot;</p>
<p>Das ist bei mir dabei herausgekommen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
    vector&lt;string&gt; word_vec;
    string text_str;
    getline(cin, text_str);

    for(string::size_type ix=0; ix &lt;= text_str.size(); ++ix)
    {
        int x=0;
        int f=0;
        if(!(isspace(text_str[f])))
        {
            word_vec[x].push_back(text_str[f]);
        }

        else if(isspace(text_str[f]))
        {
            ++x;
        }

        ++f;
    }

    return 0;
}
</code></pre>
<p>Der Code wird vom meinem Compiler g++ kompiliert. Nach der Eingabe des Textes<br />
meldet Windows das das Programm nicht mehr funktioniert.<br />
Also hab ich die Vektoren gegen arrays getauscht.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
    string word_vec[20]; //testweise 20
    string text_str;
    getline(cin, text_str);

    for(string::size_type ix=0; ix &lt;= text_str.size(); ++ix)
    {
        int x=0;
        int f=0;
        if(!(isspace(text_str[f])))
        {
            word_vec[x].push_back(text_str[f]);
        }

        else if(isspace(text_str[f]))
        {
            ++x;
        }

        ++f;
    }

    for(int i=0; i != 19; ++i)
    {
        cout &lt;&lt; word_vec[i] &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Hier meldet Windows keine Fehler aber cout gibt mir den Anfangsbuchstaben des<br />
strings aus. Was hab ich falch gemacht ? Vielen Dank schonmal im Voraus. <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/2276160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276160</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Fri, 30 Nov 2012 16:55:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 17:02:07 GMT]]></title><description><![CDATA[<p>Du gehst durch das &lt;= in der Abbruchbedingung schon einmal mindestens einen Schritt zu weit. Ich hätte mich an deiner Stelle übrigens stärker an der Aufgabenstellung orientiert: Mit operator&gt;&gt; kannst du wie Wörter gleich getrennt einlesen, anstatt diese fehleranfällig von Hand auseinander zu fummeln. Dann speicherst du sie direkt ab und hinterher schaust du dir deine Wörter noch einmal an und wandelst sie in Großbuchstaben um. Es bietet sich an, für diesen letzten Punkt eine eigene Funktion zu schreiben, das wird übersichtlicher und kann besser getestet werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276166</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 30 Nov 2012 17:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 17:05:10 GMT]]></title><description><![CDATA[<p>ja stimmt da hast du recht. Aber ich weiß immer noch nicht warum mein Programm jetzt nicht funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276168</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Fri, 30 Nov 2012 17:05:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 17:10:17 GMT]]></title><description><![CDATA[<p>Da ist dein Fehler:</p>
<pre><code class="language-cpp">word_vec[x].push_back(text_str[f]);
</code></pre>
<p>Dein Vector ist leer. Du müsstest erst einen String Einfügen, um dann etwas daran anhängen zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276170</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 30 Nov 2012 17:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 17:17:51 GMT]]></title><description><![CDATA[<p>Könnte der Vektor &quot;word_vec&quot; nicht einfach während des Codes neuen Speicherplatzt für die Buchstaben hinzufügen ?.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276171</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Fri, 30 Nov 2012 17:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 17:33:03 GMT]]></title><description><![CDATA[<p>Keksman schrieb:</p>
<blockquote>
<p>Könnte der Vektor &quot;word_vec&quot; nicht einfach während des Codes neuen Speicherplatzt für die Buchstaben hinzufügen ?.</p>
</blockquote>
<p>Dir fehlen die Worte <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>Du müsstest ein leeres Wort einfügen, wenn eine neues Wort anfängt. Aber wenn du es so machen würdest, wie SeppJ es beschrieben hat, würdest du einfach das fertige Wort mit push_back in den Vector einhängen.</p>
<pre><code class="language-cpp">word_vec.push_back( word );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2276175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276175</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 30 Nov 2012 17:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 18:26:04 GMT]]></title><description><![CDATA[<p>Ich verstehe nicht genau was Ihr mit der cin&gt;&gt;text Eingabe bewirken wollt. Wie soll ich die die einzelnen Wörter in die Vektoren reinpacken. cin ließt doch nur bis ein Leerzeichen oder ein Tabulator kommt. Und ich verstehe auch nicht warum mein Code unpassend ist. Wenn x um 1 erhöht wird dann muss ja automatisch word_vec neuen Speicherplatzt bekommen. Ich habe aber keine Ahnung wie ich das anstellen soll. Also versuch ich das mal so wie SeppJ mir das vorgeschlagen hat. Ich hab jetzt alles durchprobiert. Ich kriegs nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Entweder gibst nen Syntaxfehler oder das Programm läuft nicht so wie es soll. Bitte gebt mir einen Tipp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276189</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Fri, 30 Nov 2012 18:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 19:21:59 GMT]]></title><description><![CDATA[<p>Ein Tipp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

int main()
{
        std::string w;
        while( std::cin &gt;&gt; w ){
                std::cout &lt;&lt; w &lt;&lt; std::endl;
        }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2276209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276209</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 30 Nov 2012 19:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 19:30:23 GMT]]></title><description><![CDATA[<p>Kann mir echt keiner eine Antwort geben oder wurde meine Frage schon vorher<br />
beantwortet und ich bin nur zu blöd den Fehler zu beheben ? Ich poste hier nochmal den Code mit Kommentierung.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
    string word_str[20]; //testweise 20 . gibt natürlich einen Fehler wenn der Satzt mehr als 20 Wörter enthält aber ich bin erstmal froh wenn sich überhaupt was tut.
    string text_str; // leerer string
    getline(cin, text_str); // liest von der Standarteingabe

    for(string::size_type ix=0; ix != text_str.size(); ++ix) // wenn text_str z.B. &quot;Bald ist Weinachten&quot; enthält wird diese Schleife nur 19 mal wiederholt 
    {
        int x=0; 
        int f=0;
        if(!(isspace(text_str[f]))) // im ersten Schleifendurchlauf steht hier ja if(!(isspace(text_str[0]))) also wird geprüft ob das erste Zeichen
        {   // im string text_str kein leerzeichen ist. Das ist so und somit wird der erste Buchstabe an den ersten string char gehängt. else if wird übersprungen und f wir um 1 erhöht. Diese Schleife wiederholt sich und wenn es ein leerzeichen gibt dann wird die else if schleife ausgeführt und x wird um 1 erhöht. Somit würde beim nächsten Durchlauf das zweite wort in word_str[1] abgespeichert. Das wiederholt sich ja alles bis die hauptforschleife nicht mehr erfüllt ist weil ix = die größe des strings text_str entsprechen würde. 
            word_str[x].push_back(text_str[f]);
        }

        else if(isspace(text_str[f]))
        {
            ++x;
        }

        ++f;
    }

    for(int i=0; i != 20; ++i)
    {
        cout &lt;&lt; word_str[i] &lt;&lt; endl; // hier werden die Wörter dann ausgegeben
    }

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2276210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276210</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Fri, 30 Nov 2012 19:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Vektorelementen on Fri, 30 Nov 2012 19:35:28 GMT]]></title><description><![CDATA[<p>Danke manni66. so simple und ich bin nicht drauf gekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <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="😃"
    /> passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276215</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Fri, 30 Nov 2012 19:35:28 GMT</pubDate></item></channel></rss>