<?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[Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back)]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich muss ein Programm schreiben und bin am verzweifeln. Alle Beiträge die gelesen haben um Daten aus einer TXT in einen Vektor zuschreiben benutzen immer push_back. Vielleicht bin ich ja zu blöd <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="😕"
    /> aber wenn ich push_back benutze explodiert mein vektor.</p>
<p>Die Quelldatei ist ungefähr so aufgebaut (mit leerzeilen)</p>
<p>leer<br />
Name<br />
leer<br />
leer<br />
Strasse<br />
Ort<br />
leer</p>
<p>Die Leerzeichen benötige ich da die Originaldatei nicht homogen aufgebaut ist (wird von einem anderen Unterprogramm schon bearbeitet)</p>
<p>Anbei mein Code</p>
<pre><code class="language-cpp">int ausgabe()
{
# include &lt;cstdlib&gt;
# include &lt;string&gt;
# include &lt;fstream&gt;

unsigned int k;	
int z;
char test;
fstream eva;
eva.open(&quot;c:\\temp\\eva.txt&quot;);
ifstream in(&quot;c:\\temp\\daten.txt&quot;);
string line5; // variable für zeileneinlesen
vector&lt;string&gt; w; // Einen Vektor für die Werte deklarieren

while(getline(in,line5)) 
	w.push_back (line5);      //Zeile in den Vektor übergeben
	for (k=0;k&lt;=2; ++k)  //Vektor hochzählen
	{
	eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n';
	w.erase (w.begin(),w.end());
	}

return 0;
}
</code></pre>
<p>Vielleicht kann mir ja jemand auf die Sprünge helfen.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/283371/vektor-mit-daten-aus-txt-zeilenweise-beschreiben-was-anderes-als-push_back</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 15:59:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/283371.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Mar 2011 13:49:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 13:49:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich muss ein Programm schreiben und bin am verzweifeln. Alle Beiträge die gelesen haben um Daten aus einer TXT in einen Vektor zuschreiben benutzen immer push_back. Vielleicht bin ich ja zu blöd <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="😕"
    /> aber wenn ich push_back benutze explodiert mein vektor.</p>
<p>Die Quelldatei ist ungefähr so aufgebaut (mit leerzeilen)</p>
<p>leer<br />
Name<br />
leer<br />
leer<br />
Strasse<br />
Ort<br />
leer</p>
<p>Die Leerzeichen benötige ich da die Originaldatei nicht homogen aufgebaut ist (wird von einem anderen Unterprogramm schon bearbeitet)</p>
<p>Anbei mein Code</p>
<pre><code class="language-cpp">int ausgabe()
{
# include &lt;cstdlib&gt;
# include &lt;string&gt;
# include &lt;fstream&gt;

unsigned int k;	
int z;
char test;
fstream eva;
eva.open(&quot;c:\\temp\\eva.txt&quot;);
ifstream in(&quot;c:\\temp\\daten.txt&quot;);
string line5; // variable für zeileneinlesen
vector&lt;string&gt; w; // Einen Vektor für die Werte deklarieren

while(getline(in,line5)) 
	w.push_back (line5);      //Zeile in den Vektor übergeben
	for (k=0;k&lt;=2; ++k)  //Vektor hochzählen
	{
	eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n';
	w.erase (w.begin(),w.end());
	}

return 0;
}
</code></pre>
<p>Vielleicht kann mir ja jemand auf die Sprünge helfen.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032255</guid><dc:creator><![CDATA[Matthes]]></dc:creator><pubDate>Thu, 10 Mar 2011 13:49:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:00:14 GMT]]></title><description><![CDATA[<p>Was meinst du mit explodieren?</p>
<p>Außerdem: Erklär mal bitte die magischen Zahlen in Zeile 21 und die Absicht hinter Zeile 22. Vermutlich wird sich dein Problem lösen, wenn du diese beiden Fragen beantwortest.</p>
<p>Und noch was: Deine Einrückung und der Kommentar in Zeile 19 machen mir Angst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032267</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:05:58 GMT]]></title><description><![CDATA[<p>Ist das richtig, dass der ERP_KEY in der ersten Zeile und z.B. die Postleitzahl in der 11.Zeile steht?<br />
Ab wie vielen Zeilen wiederholt sich der Datensatz?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032273</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:15:12 GMT]]></title><description><![CDATA[<p>@ seppj</p>
<p>Wenn ich im Debug Modus anschaue steht da w[0]&quot; &quot; im w[1]&quot; &quot;,&quot;Name&quot; im w[2&rsqb;&rsqb;&quot; &quot;,&quot;Name&quot;,&quot; &quot; usw. irgendwann kommt dei Fehlermeldung vector subscript out of range (überlaufen)</p>
<p>In zeile 21 wollte ich dann die Vektoren in einen Datensatz ausgeben (daher w[1] und so weiter )</p>
<p>bei 22 wollte ich den Vektor löschen das hatte aber nicht geklappt und ich hatte vergessen es rauszulöschen. sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032281</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:15:12 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:16:42 GMT]]></title><description><![CDATA[<p>Für alle ich habe ein Fehler beim erstellen gemacht (vergessen anzumelden)</p>
<p>Also Matthes ist Matthesjimte</p>
<p>Sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032283</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:19:29 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@werner</a></p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox20931" checked="true" /><label for="checkbox20931">beschrieben. nach dem 17 Datensatz kann ich dann einen Sprung machen in den nächsten Datensatz. Aber ich kann das über das andere Unterprogramm steuern, micht stört eher das der Vektor nicht so will wie ich</label></div></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032286</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:34:02 GMT]]></title><description><![CDATA[<p>Um dir mal zu sagen, worauf ich hinaus wollte:</p>
<ol>
<li>` eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n';</li>
</ol>
<p>`<br />
Existiert überhaupt ein Element 17, also hat deine Datei 18 Zeilen oder mehr? Ist dir überhaupt klar, dass ein vector bei 0 anfängt?</p>
<ol start="2">
<li><code>w.erase (w.begin(),w.end());</code><br />
Du löscht also den gesamten vector und danach geht es zurück zu Schritt 1 wo munter auf den vector zugegriffen wird. BLÄMM! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2032296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032296</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:41:58 GMT]]></title><description><![CDATA[<p>Matthesjimte schrieb:</p>
<blockquote>
<p>Wenn ich im Debug Modus anschaue steht da w[0]&quot; &quot; im w[1]&quot; &quot;,&quot;Name&quot; im w[2&rsqb;&rsqb;&quot; &quot;,&quot;Name&quot;,&quot; &quot; usw. irgendwann kommt dei Fehlermeldung vector subscript out of range (überlaufen)</p>
</blockquote>
<p>letzteres liegt daran, dass Du den vector sofort in der Schleife wieder löschst. Jeder weitere Zugriff ist ein 'subscript out of range'.</p>
<p>Willst Du sowas:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;

int ausgabe()
{
    using namespace std;
    const int ZEILEN_PRO_DATENSATZ = 17;
    fstream eva(&quot;c:\\temp\\eva.txt&quot;);
    ifstream in(&quot;c:\\temp\\daten.txt&quot;);
    while (in)
    {
        // --   genau einen Datensatz verarbeiten
        vector&lt;string&gt; w; // Einen Vektor für die Werte EINES Datensatzes
        for (string line5; w.size() &lt; ZEILEN_PRO_DATENSATZ &amp;&amp; getline(in,line5);)
            w.push_back (line5);      //Zeile in den Vektor übergeben
        if (in)
            eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n';
    }
    return 0;
}
</code></pre>
<p>Matthes schrieb:</p>
<blockquote>
<p>Die Quelldatei ist ungefähr so aufgebaut (mit leerzeilen)</p>
<p>leer<br />
Name<br />
leer<br />
leer<br />
Strasse<br />
Ort<br />
leer</p>
</blockquote>
<p>stimmt nicht überein mit &quot;... ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17] ...&quot; ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032305</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:42:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Um dir mal zu sagen, worauf ich hinaus wollte:</p>
<ol>
<li>` eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n';</li>
</ol>
<p>`<br />
Existiert überhaupt ein Element 17, also hat deine Datei 18 Zeilen oder mehr? Ist dir überhaupt klar, dass ein vector bei 0 anfängt?</p>
<p>Es existieren sogar viel mehr Elemente die habe ich aber schon ruasgefillter (ein Datensatz enthält mit allen Leerstellen (die manchmal aber nicht leer sind) über 100 Elemente. ISt also gelöst!</p>
<ol start="2">
<li><code>w.erase (w.begin(),w.end());</code><br />
Du löscht also den gesamten vector und danach geht es zurück zu Schritt 1 wo munter auf den vector zugegriffen wird. BLÄMM! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></li>
</ol>
</blockquote>
<p>Sorry da stehe ich jetzt auf dem Schlauch. Also wenn ich im debug mir das anschaue komme ich noch nicht mal auf diesen Punkt er springt immer nur zwischen zeile 17 und 18 hin und her ohne nach unten zu gehen (obwohl ich über all berakpoints eingesetzt habe (vielleicht liegt auch da mein Fehler)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032307</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:42:12 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 14:51:26 GMT]]></title><description><![CDATA[<p>Matthesjimte schrieb:</p>
<blockquote>
<p>Also wenn ich im debug mir das anschaue komme ich noch nicht mal auf diesen Punkt er springt immer nur zwischen zeile 17 und 18 hin und her ohne nach unten zu gehen (obwohl ich über all berakpoints eingesetzt habe (vielleicht liegt auch da mein Fehler)</p>
</blockquote>
<p>Setzte den ersten Breakpoint auf Zeile 19, lasse ihn bis dahin laufen (Run) und schau Dir dann im Debugger an, wie groß Dein vector ist (wieveiel Elemente). Setzte den nächsten Breakpoint in Zeile 21 und Du wirst sehen, dass beim zweiten mal in Zeile 21 der vector leer ist. Anschließend gibt's den 'subscript out of range'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032315</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Thu, 10 Mar 2011 14:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 15:05:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@werner</a> erstmal vielen dank für den Schnelle Codeblock</p>
<p>Ich habe den in Visual C++ 2008 Express importiert und mit Vektor angeschaut, das sieht genauso aus wie bei mir <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="😞"
    /><br />
hier das ergebnis mittendrin<br />
[9](&quot; &quot;,&quot;10000&quot;,&quot; &quot;,&quot;DE&quot;,&quot; &quot;,&quot;Institut Für Fußbodentechnik&quot;,&quot; &quot;,&quot;Norbert Strehle&quot;,&quot; &quot;)</p>
<p>vielleicht bin ich auch zu blöd ich dachte das die Daten aber so intern weg sepichert werden.<br />
[0](&quot; &quot;)<br />
[1](&quot;10000&quot;<br />
[2](&quot; &quot;)<br />
[3](&quot;DE&quot;)</p>
<p>ich wollte erst alle Daten der Datei einlesen und dann über eine Schleife die DAten dann in der Ausgabe selektieren ist vielleicht umständlich aber ich wollte den Code noch für andere Dateien benutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032327</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 15:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 15:12:45 GMT]]></title><description><![CDATA[<p>Werner_logoff schrieb:</p>
<blockquote>
<p>Matthesjimte schrieb:</p>
<blockquote>
<p>Wenn ich im Debug Modus anschaue steht da w[0]&quot; &quot; im w[1]&quot; &quot;,&quot;Name&quot; im w[2&rsqb;&rsqb;&quot; &quot;,&quot;Name&quot;,&quot; &quot; usw. irgendwann kommt dei Fehlermeldung vector subscript out of range (überlaufen)</p>
</blockquote>
<p>letzteres liegt daran, dass Du den vector sofort in der Schleife wieder löschst. Jeder weitere Zugriff ist ein 'subscript out of range'.</p>
<p>Willst Du sowas:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;

int ausgabe()
{
    using namespace std;
    const int ZEILEN_PRO_DATENSATZ = 17;
    fstream eva(&quot;c:\\temp\\eva.txt&quot;);
    ifstream in(&quot;c:\\temp\\daten.txt&quot;);
    while (in)
    {
        // --   genau einen Datensatz verarbeiten
        vector&lt;string&gt; w; // Einen Vektor für die Werte EINES Datensatzes
        for (string line5; w.size() &lt; ZEILEN_PRO_DATENSATZ &amp;&amp; getline(in,line5);)
            w.push_back (line5);      //Zeile in den Vektor übergeben
        if (in)
            eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n';
    }
    return 0;
}
</code></pre>
<p>Matthes schrieb:</p>
<blockquote>
<p>Die Quelldatei ist ungefähr so aufgebaut (mit leerzeilen)</p>
<p>leer<br />
Name<br />
leer<br />
leer<br />
Strasse<br />
Ort<br />
leer</p>
</blockquote>
<p>stimmt nicht überein mit &quot;... ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17] ...&quot; ??</p>
</blockquote>
<p>Du hast recht ich dachte aber das es nicht so wichtig und der Fehler nur beim push_back lag (eigentlich hatte ich gehofft das der Satz kommt dann nehm doch einfach das oder das). ISt wohl doch ein bißchen schwerer zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032331</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 15:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 15:39:42 GMT]]></title><description><![CDATA[<p>Matthesjimte schrieb:</p>
<blockquote>
<p>Ich habe den in Visual C++ 2008 Express importiert und mit Vektor angeschaut, das sieht genauso aus wie bei mir <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="😞"
    /></p>
</blockquote>
<p>ja im Prinzip sollte der genauso aussehen. der Unterschied ist nur, dass bei Dir ALLE Zeilen des Dokuments im vector sind und bei meinem Code nur jeweils die 17 (eines Datenblocks)</p>
<p>Matthesjimte schrieb:</p>
<blockquote>
<p>hier das ergebnis mittendrin<br />
[9](&quot; &quot;,&quot;10000&quot;,&quot; &quot;,&quot;DE&quot;,&quot; &quot;,&quot;Institut Für Fußbodentechnik&quot;,&quot; &quot;,&quot;Norbert Strehle&quot;,&quot; &quot;)</p>
</blockquote>
<p>Die [9] bedeutet, dass der vector 9 Elemente enthält. Wen Du auf das [+] vor dem vector im Debug-Fenster klickst, so siehst Du sie einzeln.</p>
<p>Matthesjimte schrieb:</p>
<blockquote>
<p>vielleicht bin ich auch zu blöd ich dachte das die Daten aber so intern weg sepichert werden.<br />
[0](&quot; &quot;)<br />
[1](&quot;10000&quot;<br />
[2](&quot; &quot;)<br />
[3](&quot;DE&quot;)</p>
</blockquote>
<p>ja genauso werden sie gespeichert, in diesem Fall sind die [#] die Indizes ...</p>
<p>Matthesjimte schrieb:</p>
<blockquote>
<p>ich wollte erst alle Daten der Datei einlesen und dann über eine Schleife die DAten dann in der Ausgabe selektieren ist vielleicht umständlich aber ich wollte den Code noch für andere Dateien benutzen</p>
</blockquote>
<p>kannst Du auch machen, brauchst Du aber nicht, braucht mehr Speicher und ist evt. etwas schwieriger zu Programmieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032356</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Thu, 10 Mar 2011 15:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 16:06:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@werner</a> Danke erstmal werde do heute abend noch mal reinschauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032370</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 16:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 19:27:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@werner</a> Dank dir bin ich jetzt schlauer. das mit dem Plus war ein guter Tipp</p>
<p>Mein Programm steigt aus weil nicht mehr wie 1800 Vectoren eingelesen werden und dann meine Ausgabe auf einen Vektor zugreift der nicht existiert.</p>
<p>Gibt es da eine Grenze? kann man die umgehen</p>
<p>auch wenn nicht schön aussieht hier mein code</p>
<pre><code class="language-cpp">int ausgabe()
{
# include &lt;cstdlib&gt;
# include &lt;string&gt;
# include &lt;fstream&gt;

unsigned int k;	
int z;
int v1=1;
int v2=5;
int v3=7;
int v4=17;
int v5=11;
int v6=9;
int v7=3;
char test;
fstream eva;
eva.open(&quot;c:\\temp\\eva.txt&quot;);
ifstream in(&quot;c:\\temp\\daten.txt&quot;);
string line5; // variable für zeileneinlesen
vector&lt;string&gt; w; // Einen Vektor für die Werte deklarieren

while ( std::getline(in, line5,'\n')) 
{
	w.push_back (line5);      //Zeile in den Vektor übergeben
}
for (k=0 ; k&lt;=1000 ; k++)  //Vektor hochzählen
{
	z=k*18;
	v1=z+1;
	v2=z+5;
	v3=z+7;
	v4=z+17;
	v5=z+11;
	v6=z+9;
	v7=z+3;

	eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[v1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[v2]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[v3]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[v4]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[v5]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[v6]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[v7]&lt;&lt; '\n';

}

return 0;
}
</code></pre>
<p>Die Datei die ich einlesen muss hat 400 zeilen und 17 elemente macht 6800 Daten.<br />
Muss ich mich da am besten von Vektoren verabschieden? oder soll ich die Datei einlesen, erste zeile löschen und wieder schließen. dann wieder aufmachen, löschen usw.? ist aber nicht die feine Art.</p>
<p>Fragen über Fragen! und nochmals vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> für die schnelle Hilfe, hätte schon vor Tagen in Forum schreiben sollen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032456</guid><dc:creator><![CDATA[Matthesjimte]]></dc:creator><pubDate>Thu, 10 Mar 2011 19:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Thu, 10 Mar 2011 20:19:20 GMT]]></title><description><![CDATA[<p>Vektoren haben keine Größenbegrenzung. Deine for-schleife ist komplett falsch. Du führst mysteriöse Rechnungen aus, die letztlich in einer Zugriffsverletzung enden müssen!!!</p>
<p>Mal tachelles, wie sehen nun die Daten wirklich aus? NICHT nur ungefähr. Gib ein komplettes Beispiel, aus mindestens 3 Datensätzen. Dann erst kann dir richtig geholfen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032487</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 10 Mar 2011 20:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Fri, 11 Mar 2011 08:46:14 GMT]]></title><description><![CDATA[<p>Bei der for-Schleife ist der höchste berechnete Index 18017 (v4). Das ist weit mehr als 6800. Das muss ja daneben gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032602</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 11 Mar 2011 08:46:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Fri, 11 Mar 2011 11:45:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string&gt; 
#include &lt;fstream&gt; 
#include &lt;vector&gt; 

int ausgabe() 
{ 
    using namespace std; 
    const int ZEILEN_PRO_DATENSATZ = 17; 
    fstream eva(&quot;c:\\temp\\eva.txt&quot;); 
    ifstream in(&quot;c:\\temp\\daten.txt&quot;); 
    while (in) 
    { 
        // --   genau einen Datensatz verarbeiten 
        vector&lt;string&gt; w; // Einen Vektor für die Werte EINES Datensatzes 
        for (string line5; w.size() &lt; ZEILEN_PRO_DATENSATZ &amp;&amp; getline(in,line5);) 
            w.push_back (line5);      //Zeile in den Vektor übergeben 
        if (in) 
            eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n'; 
    } 
    return 0; 
}
</code></pre>
<p>Die Abfrage if(in) sieht für mich komisch aus. Müsste man nicht viel eher überprüfen, ob der Vektor v auch 18 Elemente hat, also der Datensatz komplett ist, dann die Ausgabe nach eva schreiben und abschließend den Vektor v leeren?<br />
Und in einem else-Zweig eine Fehlerbehandlung durchführen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032703</guid><dc:creator><![CDATA[bmario]]></dc:creator><pubDate>Fri, 11 Mar 2011 11:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Fri, 11 Mar 2011 12:16:58 GMT]]></title><description><![CDATA[<p>bmario schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;string&gt; 
#include &lt;fstream&gt; 
#include &lt;vector&gt; 

int ausgabe() 
{ 
    using namespace std; 
    const int ZEILEN_PRO_DATENSATZ = 17; 
    fstream eva(&quot;c:\\temp\\eva.txt&quot;); 
    ifstream in(&quot;c:\\temp\\daten.txt&quot;); 
    while (in) 
    { 
        // --   genau einen Datensatz verarbeiten 
        vector&lt;string&gt; w; // Einen Vektor für die Werte EINES Datensatzes 
        for (string line5; w.size() &lt; ZEILEN_PRO_DATENSATZ &amp;&amp; getline(in,line5);) 
            w.push_back (line5);      //Zeile in den Vektor übergeben 
        if (in) 
            eva &lt;&lt;&quot;Satzart=CMPK01|ADRESSART=KUNDE|ERP_KEY=&quot;&lt;&lt;w[1]&lt;&lt;&quot;|NAME1=&quot;&lt;&lt;w[5]&lt;&lt;&quot;|NAME2=&quot;&lt;&lt;w[7]&lt;&lt;&quot;|STRASSE=&quot;&lt;&lt;w[17]&lt;&lt;&quot;|PLz=&quot;&lt;&lt;w[11]&lt;&lt;&quot;|ORT=&quot;&lt;&lt;w[9]&lt;&lt;&quot;|LAND=&quot;&lt;&lt;w[3]&lt;&lt; '\n'; 
    } 
    return 0; 
}
</code></pre>
<p>Die Abfrage if(in) sieht für mich komisch aus. Müsste man nicht viel eher überprüfen, ob der Vektor v auch 18 Elemente hat, also der Datensatz komplett ist, dann die Ausgabe nach eva schreiben und abschließend den Vektor v leeren?<br />
Und in einem else-Zweig eine Fehlerbehandlung durchführen?</p>
</blockquote>
<p>wenn bool(in)==true ist, so muss der vector ZEILEN_PRO_DATENSATZ Elemente enthalten (17 oder 18 - Matthes ist sich da selber nicht einig). Ansonsten wäre die darüber liegende for-Schleife gar nicht verlassen worden.<br />
Das Leeren des vectors ist unnötig, da der vector lokal exisitiert und mit jedem Schleifendurchlauf der while-Schleife neu angelegt wird. (Nein, das muss nicht zwingend unperfomant sein)</p>
<p>Die Abfrage if(w.size()==ZEILEN_PRO_DATENSATZ) .. wäre in diesem Fall gleichbedeutend, enthielte aber eine implizite Redundanz gegenüber den Zeilen darüber. Es wäre ja z.B.: denkbar, dass man in den Code-Zeilen 14-16 nur die Zeilen aus der Datei liest, die man auch wirklich braucht, dann müsste diese Abfrage wieder angepasst werden - ein einfaches if(in) dagegen nicht. Aber ich glaube Matthes kämpft noch mit profaneren Problemen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032711</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 11 Mar 2011 12:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Fri, 11 Mar 2011 12:31:35 GMT]]></title><description><![CDATA[<p>Werner_logoff schrieb:</p>
<blockquote>
<p>wenn bool(in)==true ist, so muss der vector ZEILEN_PRO_DATENSATZ Elemente enthalten (17 oder 18 - Matthes ist sich da selber nicht einig). Ansonsten wäre die darüber liegende for-Schleife gar nicht verlassen worden.</p>
</blockquote>
<p>Das klingt logisch, danke.</p>
<p>Werner_logoff schrieb:</p>
<blockquote>
<p>Das Leeren des vectors ist unnötig, da der vector lokal exisitiert und mit jedem Schleifendurchlauf der while-Schleife neu angelegt wird. (Nein, das muss nicht zwingend unperfomant sein)</p>
</blockquote>
<p>Oha, da hatte ich doch glatt übersehen, dass w lokal ist, in Matthes Version war es das noch nicht <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="🙂"
    /><br />
Und du wirst lachen, aber ich hab mich mittlerweile auch gefragt, ob es sinnvoll wäre w nicht lokal zu machen. Was ist denn effizienter, den Vektor komplett zu zerstören, also Konstruktor und Destruktor für jeden Durchlauf in Kauf nehmen, oder die Elemente jeweils zu löschen?</p>
<p>Aber ein was fällt mir noch ein:</p>
<pre><code class="language-cpp">vector&lt;string&gt; w(ZEILEN_PRO_DATENSATZ+1);
</code></pre>
<p>mario</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032719</guid><dc:creator><![CDATA[bmario]]></dc:creator><pubDate>Fri, 11 Mar 2011 12:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor mit daten aus Txt zeilenweise beschreiben (was anderes als push_back) on Fri, 11 Mar 2011 12:53:00 GMT]]></title><description><![CDATA[<p>bmario schrieb:</p>
<blockquote>
<p>Aber ein was fällt mir noch ein:</p>
<pre><code class="language-cpp">vector&lt;string&gt; w(ZEILEN_PRO_DATENSATZ+1);
</code></pre>
</blockquote>
<p>Das wäre auch eine Möglichkeit, die gleich zeigt, dass die Abfrage if(in) der Abfrage if(w.size()==ZEILEN_PRO_DATENSATZ) überlegen ist. Vergisst man nämlich im letzteren Fall die Abfrage zu ändern, so schießt man sich in's Knie und merkt es vielleicht gar nicht.</p>
<p>Das '+1' ist unnötig.</p>
<p>bmario schrieb:</p>
<blockquote>
<p>Was ist denn effizienter, den Vektor komplett zu zerstören, also Konstruktor und Destruktor für jeden Durchlauf in Kauf nehmen, oder die Elemente jeweils zu löschen?</p>
</blockquote>
<p>Solche Fragen würde ich bei dem Level, bei dem wir hier gerade diskutieren, ganz ganz weit hinten ansiedeln. (s. <a href="http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize" rel="nofollow">Donald Knuth &quot;premature optimization is the root of all evil&quot;</a>).<br />
Denk' lieber darüber nach, wie man den Code übersichtlich, einfach und vor allem funktionsfähig gestaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2032722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2032722</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 11 Mar 2011 12:53:00 GMT</pubDate></item></channel></rss>