<?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 mit Vektoren]]></title><description><![CDATA[<p>Hallo,<br />
Also ich hab ein kleines Problem mit Vektoren.<br />
Und zwar will ich grad eine Klasse für Tilemaps schreiben, aber es stürzt dann immer ab.</p>
<p>Also hier mal der Code bei dem es abstürzt:<br />
(Also bi zum Map laden Zeile 36 geht alles, habs nur mal zwegs der vollständigkeit rein.)</p>
<pre><code class="language-cpp">std::ifstream in;

    in.open(filename.c_str());  // Map-Datei öffnen

    if(in.is_open())    // wenn datei geöffnet ist, dann lesen
    {
        Log-&gt;Textout(&quot;Datei wird geladen&quot;);
        char buffer[512];
        Image temp;
        string test;

        in.getline(buffer, 16, '\n');    //Breite einlesen
        m_Col = atoi(buffer);
        in.getline(buffer, 16, '\n');    //Höhe einlesen
        m_Row = atoi(buffer);
        Log-&gt;Textout(&quot;Tilesetgröße geladen X: %i , Y: %i&quot;,m_Col,m_Row);

        in.getline(buffer, 255, '\n');  //Weg-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[0] = temp;
        in.getline(buffer, 255, '\n');  //Baubar-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[1] = temp;
        in.getline(buffer, 255, '\n');  //Unbaubar-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[2] = temp;
        in.getline(buffer, 255, '\n');  //Sonder-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[3] = temp;
        for(int i=0;i&lt;=4;i++)
        {
            TilesetList[i].SetMultiImage(6,2);
        }
        Log-&gt;Textout(&quot;Tilesets geladen&quot;);

        //Map laden
        for(int i = 0; i &lt;m_Row ; i++)
        {
            vector&lt;Tile&gt; temp;
            for(int j = 0; j &lt; m_Col; j++)
            {
                int T1,T2;
                in.getline(buffer, 16, '.'); //Ersten Wert einlesen
                T1=atoi(buffer);

                in.getline(buffer, 16, '|'); //Zweiten Wert einlesen
                T2=atoi(buffer);
                Tile tTile(T1,T2);
                temp.push_back(tTile);
            }
            m_map.push_back(temp);
        }
    }
    else
    {
        Log-&gt;Textout(&quot;Fehler beim laden der Datei %s&quot;,filename.c_str());
    }
    in.close();
    Log-&gt;Textout(&quot;Datei fertig geladen&quot;);
    return true;
</code></pre>
<p>Und das ist die Datei &quot;map1.txt&quot;:<br />
10<br />
10<br />
Weg1.tga<br />
Baubar1.tga<br />
Unbaubar1.tga<br />
Sonder1.tga<br />
1.00 | 1.00 | 3.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |<br />
1.00 | 0.03 | 0.05 | 1.00 | 1.00 | 1.00 | 1.00 | 0.03 | 0.01 | 3.01 |<br />
1.00 | 0.00 | 1.00 | 0.03 | 0.01 | 0.04 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.02 | 0.01 | 0.05 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.03 | 0.01 | 0.01 | 0.01 | 0.05 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.03 | 0.05 | 1.00 | 1.00 |<br />
1.00 | 0.02 | 0.01 | 0.01 | 0.01 | 0.01 | 0.05 | 1.00 | 1.00 | 1.00 |<br />
1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |</p>
<p>So also mein Problem ist bei der Map, dass das Programm abstürzt und zwar nach dem die Schleife</p>
<pre><code class="language-cpp">for(int i = 0; i &lt;m_Row ; i++)
</code></pre>
<p>i==8 wird. Also danach stürzt das einfach kommentarlos ab. Obwohl m_Row 10 ist.<br />
Das kann meiner meinung nach nur an den Vektoren liegen. Weil wenn man die Mapgröße meinertwegen auf unter 8 Stellt geht alles bzw. es geht auch immer mal wieder bei größeren z.B. bei 20 geht das laden. Und ich komm einfach nicht drauf warum.</p>
<p>Hoffe ihr könnt mir helfen und hoffe das das Prblem verstanden wird, weil das ziemlich schwer zum erklären ist. Weil meiner Meinung nach nichts falsch ist und es ja auch teilweiße geht.</p>
<p>Danke für eure Hilfe<br />
mfg stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256949/problem-mit-vektoren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 14:45:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256949.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Dec 2009 13:39:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 13:39:01 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Also ich hab ein kleines Problem mit Vektoren.<br />
Und zwar will ich grad eine Klasse für Tilemaps schreiben, aber es stürzt dann immer ab.</p>
<p>Also hier mal der Code bei dem es abstürzt:<br />
(Also bi zum Map laden Zeile 36 geht alles, habs nur mal zwegs der vollständigkeit rein.)</p>
<pre><code class="language-cpp">std::ifstream in;

    in.open(filename.c_str());  // Map-Datei öffnen

    if(in.is_open())    // wenn datei geöffnet ist, dann lesen
    {
        Log-&gt;Textout(&quot;Datei wird geladen&quot;);
        char buffer[512];
        Image temp;
        string test;

        in.getline(buffer, 16, '\n');    //Breite einlesen
        m_Col = atoi(buffer);
        in.getline(buffer, 16, '\n');    //Höhe einlesen
        m_Row = atoi(buffer);
        Log-&gt;Textout(&quot;Tilesetgröße geladen X: %i , Y: %i&quot;,m_Col,m_Row);

        in.getline(buffer, 255, '\n');  //Weg-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[0] = temp;
        in.getline(buffer, 255, '\n');  //Baubar-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[1] = temp;
        in.getline(buffer, 255, '\n');  //Unbaubar-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[2] = temp;
        in.getline(buffer, 255, '\n');  //Sonder-Tileset einlesen
        temp.CreateImage(buffer,0,0,40,40);
        TilesetList[3] = temp;
        for(int i=0;i&lt;=4;i++)
        {
            TilesetList[i].SetMultiImage(6,2);
        }
        Log-&gt;Textout(&quot;Tilesets geladen&quot;);

        //Map laden
        for(int i = 0; i &lt;m_Row ; i++)
        {
            vector&lt;Tile&gt; temp;
            for(int j = 0; j &lt; m_Col; j++)
            {
                int T1,T2;
                in.getline(buffer, 16, '.'); //Ersten Wert einlesen
                T1=atoi(buffer);

                in.getline(buffer, 16, '|'); //Zweiten Wert einlesen
                T2=atoi(buffer);
                Tile tTile(T1,T2);
                temp.push_back(tTile);
            }
            m_map.push_back(temp);
        }
    }
    else
    {
        Log-&gt;Textout(&quot;Fehler beim laden der Datei %s&quot;,filename.c_str());
    }
    in.close();
    Log-&gt;Textout(&quot;Datei fertig geladen&quot;);
    return true;
</code></pre>
<p>Und das ist die Datei &quot;map1.txt&quot;:<br />
10<br />
10<br />
Weg1.tga<br />
Baubar1.tga<br />
Unbaubar1.tga<br />
Sonder1.tga<br />
1.00 | 1.00 | 3.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |<br />
1.00 | 0.03 | 0.05 | 1.00 | 1.00 | 1.00 | 1.00 | 0.03 | 0.01 | 3.01 |<br />
1.00 | 0.00 | 1.00 | 0.03 | 0.01 | 0.04 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.02 | 0.01 | 0.05 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.00 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.03 | 0.01 | 0.01 | 0.01 | 0.05 | 1.00 | 0.00 | 1.00 | 1.00 |<br />
1.00 | 0.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.03 | 0.05 | 1.00 | 1.00 |<br />
1.00 | 0.02 | 0.01 | 0.01 | 0.01 | 0.01 | 0.05 | 1.00 | 1.00 | 1.00 |<br />
1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |</p>
<p>So also mein Problem ist bei der Map, dass das Programm abstürzt und zwar nach dem die Schleife</p>
<pre><code class="language-cpp">for(int i = 0; i &lt;m_Row ; i++)
</code></pre>
<p>i==8 wird. Also danach stürzt das einfach kommentarlos ab. Obwohl m_Row 10 ist.<br />
Das kann meiner meinung nach nur an den Vektoren liegen. Weil wenn man die Mapgröße meinertwegen auf unter 8 Stellt geht alles bzw. es geht auch immer mal wieder bei größeren z.B. bei 20 geht das laden. Und ich komm einfach nicht drauf warum.</p>
<p>Hoffe ihr könnt mir helfen und hoffe das das Prblem verstanden wird, weil das ziemlich schwer zum erklären ist. Weil meiner Meinung nach nichts falsch ist und es ja auch teilweiße geht.</p>
<p>Danke für eure Hilfe<br />
mfg stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825348</guid><dc:creator><![CDATA[stefan___]]></dc:creator><pubDate>Sun, 20 Dec 2009 13:39:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 13:59:50 GMT]]></title><description><![CDATA[<p>Ich sehe jetzt auch nicht gerade was. Kannst du mit dem Debugger nachverfolgen, in welcher Zeile das Programm innerhalb der Schleife abstürzt?</p>
<p>Das Problem könnte undefiniertes Verhalten sein, besonders, da du sagst, manchmal geht es bei anderen Grössen. Ich würde an deiner Stelle weniger fehleranfällige Low-Level-Dinge wie <code>char</code> -Arrays verwenden. Du kannst mit der globalen Funktion<a href="http://www.cplusplus.com/reference/string/getline/" rel="nofollow"> <code>std::getline()</code> </a>auch in <code>std::string</code> einlesen:</p>
<pre><code class="language-cpp">std::ifstream in(&quot;map1.txt&quot;);
std::string line;
std::getline(in, line, '.');
</code></pre>
<p>Versuche auch festzustellen, ob alle anderen Variablen beim Absturz die erwarteten Werte besitzen. Hast du schon im Debug-Modus kompiliert? Normalerweise gibt es nämlich eine Fehlermeldung beim Crash, hast du keine solche erhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825362</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 20 Dec 2009 13:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 14:03:14 GMT]]></title><description><![CDATA[<p>hmm hab ich ganz vergessen mim Debbuger da mal drüber zu gehen...<br />
sorry</p>
<p>Alos hab ne Meldung bekommen kann damit aber nicht wirklich was anfangen:<br />
Program received signal SIGSEGV, Segmentation fault.<br />
In ntdll!RtlUnicodeStringToOemString () (C:\Windows\system32\ntdll.dll)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825366</guid><dc:creator><![CDATA[stefan___]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 14:05:37 GMT]]></title><description><![CDATA[<p>Was ist &quot;m_map&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825368</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 14:09:48 GMT]]></title><description><![CDATA[<p>m_Map ist eine Variable von der Klasse Map</p>
<p>Map.hpp</p>
<pre><code class="language-cpp">class Map
{
    public:
    bool LoadDatei(const string &amp;filename);    //Ladet eine Fertige Datei mit anzahl von Tilemaps und namen
    void Show();

    private:
    int m_Row;
    int m_Col;
    Image TilesetList[4];
    vector&lt;vector&lt;Tile &gt; &gt; m_map;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1825370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825370</guid><dc:creator><![CDATA[stefan___]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 14:15:22 GMT]]></title><description><![CDATA[<p>Wo stürzt es denn ab?<br />
Bei temp.push_back() oder m_map.push_back() ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825375</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:15:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Vektoren on Sun, 20 Dec 2009 14:26:49 GMT]]></title><description><![CDATA[<p>Bei<br />
m_map.push_back(temp);<br />
Aber wenn er abstürzt eigentlich immer dann wenn i 8 wird also der 9 Durchgang startet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825382</guid><dc:creator><![CDATA[stefan___]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:26:49 GMT</pubDate></item></channel></rss>