<?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[In jeder Zeile von Datei Wert anhängen...]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe gerade folgendes Problem und habe überhaupt keine Ahnung wie ich die Sache angehen soll.</p>
<p>Ich habe eine ein Programm geschrieben, welches mir x-Mal 2 vectoren a und b ausgibt. Diese vectoren sollen nun in eine Datei geschrieben werden...</p>
<p>vectora[1];vectorb[1]<br />
vectora[2];vectorb[2]<br />
vectora[3];vectorb[3]</p>
<p>Quellcode:</p>
<pre><code class="language-cpp">stringstream ss; 
            ss &lt;&lt;&quot;ready.csv&quot; ;
            string filen = ss.str();
            ofstream fout;
            fout.open(filen.c_str(), ios::trunc);
            for(size_t q=0; q&lt;uqs; q++){
                    fout&lt;&lt;uq[q]&lt;&lt;&quot;;&quot;&lt;&lt;ureadya[q]&lt;&lt;&quot;;&quot;&lt;&lt;ureadyb[q]&lt;&lt;endl;
            }
            fout.close();     
            }
</code></pre>
<p>Soweit ja auch ganz einfach. So nun läuft das Programm aber x-Mal durch, dass heißt bei jedem neuen Durchlauf muss etwas ans Ende jeder Zeile hinzugefügt werden...</p>
<p>vectora[1];vectorb[1];vectorax[1];vectorbx[1];...<br />
vectora[2];vectorb[2];vectorax[2];vectorbx[2];...<br />
vectora[3];vectorb[3];vectorax[3];vectorbx[3];...</p>
<p>Leider weiß ich überhaupt nicht, wie ich das machen soll...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301817/in-jeder-zeile-von-datei-wert-anhängen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 18:28:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301817.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Apr 2012 12:03:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 12:03:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe gerade folgendes Problem und habe überhaupt keine Ahnung wie ich die Sache angehen soll.</p>
<p>Ich habe eine ein Programm geschrieben, welches mir x-Mal 2 vectoren a und b ausgibt. Diese vectoren sollen nun in eine Datei geschrieben werden...</p>
<p>vectora[1];vectorb[1]<br />
vectora[2];vectorb[2]<br />
vectora[3];vectorb[3]</p>
<p>Quellcode:</p>
<pre><code class="language-cpp">stringstream ss; 
            ss &lt;&lt;&quot;ready.csv&quot; ;
            string filen = ss.str();
            ofstream fout;
            fout.open(filen.c_str(), ios::trunc);
            for(size_t q=0; q&lt;uqs; q++){
                    fout&lt;&lt;uq[q]&lt;&lt;&quot;;&quot;&lt;&lt;ureadya[q]&lt;&lt;&quot;;&quot;&lt;&lt;ureadyb[q]&lt;&lt;endl;
            }
            fout.close();     
            }
</code></pre>
<p>Soweit ja auch ganz einfach. So nun läuft das Programm aber x-Mal durch, dass heißt bei jedem neuen Durchlauf muss etwas ans Ende jeder Zeile hinzugefügt werden...</p>
<p>vectora[1];vectorb[1];vectorax[1];vectorbx[1];...<br />
vectora[2];vectorb[2];vectorax[2];vectorbx[2];...<br />
vectora[3];vectorb[3];vectorax[3];vectorbx[3];...</p>
<p>Leider weiß ich überhaupt nicht, wie ich das machen soll...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198645</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 12:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 12:12:11 GMT]]></title><description><![CDATA[<p>Tut das Not, dass du nicht</p>
<pre><code>vectora[0] vectora[1] vectora[2]
vectorb[0] vectorb[1] vectorb[2]
usw.
</code></pre>
<p>ausgibst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198648</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Apr 2012 12:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 12:16:49 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Tut das Not, dass du nicht</p>
<pre><code>vectora[0] vectora[1] vectora[2]
vectorb[0] vectorb[1] vectorb[2]
usw.
</code></pre>
<p>ausgibst?</p>
</blockquote>
<p>Das wäre ja wesentlich einfächer, dann müsste ja nach jedem Durchgang nur jeweils eine Zeile hinzugefügt werden.</p>
<p>Da ich aber mit einer .csv-Datei arbeite, sollten die Daten Spaltenweise (also so wie angegeben) vorliegen, da diese in ein anderes Programm importiert werden müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198651</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 12:16:49 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 12:30:01 GMT]]></title><description><![CDATA[<p>Dein Argument ist mir nicht einsichtig<sup>*</sup>. Aber nehmen wir trotzdem mal an, es <em>muss</em> so sein:<br />
Das einfachste wäre wohl, sich zunächst zu merken, was man alles rausschreiben möchte und erst, wenn alle Läufe fertig sind, wird tatsächlich geschrieben. Dies geht natürlich nur, wenn es sich um eine Schleife in einem größeren Programm handelt, über das du noch die Kontrolle hast.</p>
<p>Falls du wirklich den Fall vorliegen hast, dass du nur die Datei vorliegen hast und die Zeilen verlängern musst, dann wird dir nichts anderes übrig bleiben, als alle Zeilen einzulesen und dann abwechselnd eine Zeile und deinen jeweiligen Wert für diese Zeile auszugeben.</p>
<p><sup>*</sup>: Das ist die höfliche Art und Weise zu sagen, dass ich das für Unsinn halte. Das wäre ungeheuer umständlich für das andere Programm. Wer denkt sich so etwas aus? Falls wirklich jemand so ein verrücktes Programm geschrieben hat und du es unbedingt benutzen <em>musst</em>, kannst du auch einen kurzen Filter vorschalten, der alle Einträge transponiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198656</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Apr 2012 12:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 13:01:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Dein Argument ist mir nicht einsichtig<sup>*</sup>. Aber nehmen wir trotzdem mal an, es <em>muss</em> so sein:<br />
Das einfachste wäre wohl, sich zunächst zu merken, was man alles rausschreiben möchte und erst, wenn alle Läufe fertig sind, wird tatsächlich geschrieben. Dies geht natürlich nur, wenn es sich um eine Schleife in einem größeren Programm handelt, über das du noch die Kontrolle hast.</p>
<p>Falls du wirklich den Fall vorliegen hast, dass du nur die Datei vorliegen hast und die Zeilen verlängern musst, dann wird dir nichts anderes übrig bleiben, als alle Zeilen einzulesen und dann abwechselnd eine Zeile und deinen jeweiligen Wert für diese Zeile auszugeben.</p>
<p><sup>*</sup>: Das ist die höfliche Art und Weise zu sagen, dass ich das für Unsinn halte. Das wäre ungeheuer umständlich für das andere Programm. Wer denkt sich so etwas aus? Falls wirklich jemand so ein verrücktes Programm geschrieben hat und du es unbedingt benutzen <em>musst</em>, kannst du auch einen kurzen Filter vorschalten, der alle Einträge transponiert.</p>
</blockquote>
<p>Das ist doch Mal eine Gute Idee. Dann werde ich die Daten erstmal zeilenweise ablegen und sie dann später transformieren.</p>
<p>Wie mache ich das denn mit dem Zeilenanhängen am elegantesten?</p>
<p>Ich dachte mir das so. Beim 1. Durchlauf der Schleife wird die Datei angelegt und die erste Zeile geschrieben. Das würde so aussehn:</p>
<pre><code class="language-cpp">stringstream ss; 
                    ss &lt;&lt;&quot;FERTIG.csv&quot;;
                    string filen = ss.str();
                    ofstream fout;
                    fout.open(filen.c_str(), ios::trunc);
                    for(size_t q=0; q&lt;uqs; q++){
                            fout&lt;&lt;uq[q]
                            if(q!=ugs){
                                       fout&lt;&lt;&quot;;&quot;;
                            }
                    }
                    fout&lt;&lt;endl;
                    fout.close();
</code></pre>
<p>Wie verhält sich das nun beim 2. Durchlauf? Einfach wieder Datei öffnen und fout oder sollte ich die Datei gar nicht erst schließen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198669</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 13:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 13:45:51 GMT]]></title><description><![CDATA[<blockquote>
<p>ios::trunc</p>
</blockquote>
<p>bedeutet nichts anders als die Datei vollständig geleert wird, BEVOR Du den Handle drauf kriegst. Also gehen die alter Werte verloren.<br />
Und wenn Du sowieso mehrere Durchläufe auf einmal machst, dann merke Dir Doch die Ergebnisse und schreibe die alle auf einmal raus - z.B. wenn das Programm geschlossen wird oder wenn der Speicherverbrauch von Ergebnissen gewisse Größe übersteigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198689</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Wed, 04 Apr 2012 13:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Wed, 04 Apr 2012 16:08:16 GMT]]></title><description><![CDATA[<p>Travor schrieb:</p>
<blockquote>
<blockquote>
<p>ios::trunc</p>
</blockquote>
<p>bedeutet nichts anders als die Datei vollständig geleert wird, BEVOR Du den Handle drauf kriegst. Also gehen die alter Werte verloren.<br />
Und wenn Du sowieso mehrere Durchläufe auf einmal machst, dann merke Dir Doch die Ergebnisse und schreibe die alle auf einmal raus - z.B. wenn das Programm geschlossen wird oder wenn der Speicherverbrauch von Ergebnissen gewisse Größe übersteigt.</p>
</blockquote>
<p>Geplant sind etwa 50.000 Durchläufe, dabei wird eine Datenmenge von 2 GB angehäuft. Ich dachte mir es ist nicht so klug dass alles im Programm zu belassen.</p>
<p>Ist es denn nicht möglich einfach die Datei zu öffnen und eine Zeile anzuhängen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198751</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 16:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to In jeder Zeile von Datei Wert anhängen... on Thu, 05 Apr 2012 09:01:04 GMT]]></title><description><![CDATA[<p>Hallo Javun,</p>
<blockquote>
<p>Ist es denn nicht möglich einfach die Datei zu öffnen und eine Zeile anzuhängen?</p>
</blockquote>
<p>Beim Begriff &quot;Zeile&quot; im Zusammenhang mit Dateien vermute ich immer ein Missverständnis was Dateien betrifft. Ich nehme mal an, Du stellst dir eine Datei als Blatt Papier vor auf welchem die Zeilen formatiert untereinander liegen.</p>
<p>Diese Vorstellung ist für &quot;normale&quot; Dateien falsch!</p>
<p>Eine &quot;normale&quot; Datei stellst Du dir besser als (unzerschneidbaren)Papierstreifen (ähnlich einer Luftschlange) vor. Die Daten (auch Leerschlag und Zeilenumbruch sind Daten) werden auf diesem Streifen ohne Leerstellen gespeichert. Es ist also nicht möglich irgedendwo etwas einzufügen. Anhängen am Ende ist aber möglich (ios::app).</p>
<p>Wenn Du an die logischen &quot;Zeilen&quot; Daten anhängen musst, gibt es zwei Möglichkeiten:</p>
<p>&quot;normale&quot; Dateien:<br />
- öffne die Original Datei zum lesen (1)<br />
- öffne eine neue Datei zum schreiben (2)<br />
- Zeile für Zeile aus (1) einlesen, Daten anhängen , in Datei(2) schreiben<br />
- Original Datei löschen<br />
- Neue Datei auf den Namen der Original Datei umbenennen</p>
<p>Datenbank zB. SQlite<br />
- Hier kann man sich das ganze als Blatt Papier mit formatierten Zeilen vorstellen.<br />
- Tabelle mit allen benötigten Spalten definieren<br />
- Daten einfüllen<br />
- Ausgabe als *.csv kann zu jedem Zeitpunkt ganz einfach gemacht werden.</p>
<p>An Deiner Stelle würde ich SQLite nehmen und dazu den <a href="http://sqlitewrapper.kompex-online.com/" rel="nofollow">http://sqlitewrapper.kompex-online.com/</a> C++ wrapper.</p>
<p>Herzliche Grüsse<br />
Walter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198938</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Thu, 05 Apr 2012 09:01:04 GMT</pubDate></item></channel></rss>