<?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[kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade dabei ein Prog zu schreiben welches ein Bin - File einließt, den Header auswertet und in einer Struktur ablegt.</p>
<p>Bis hier kein Problem. Jetzt muss der Header im Klartext in ein Ausgabefile un ich dachte, ich könne das einfach mittels:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 1024; i++){ 
fileoutstream &lt;&lt; &quot;String&quot; &lt;&lt; endl;
}
</code></pre>
<p>In wirklichkeit sind das viel mehr Strings und Variablen die in den Stream geschoben werden.<br />
Funktioniert nicht wirklich, es gehen immer wieder Daten verloren.</p>
<p>Meine Idee einen Buffer anlegen:</p>
<pre><code class="language-cpp">char* buffer;
</code></pre>
<p>und diesen befüllen und erst zum schluss in den Stream schieben. Leider fällt mir da immer nur sprinf() als Lösung ein. Aber das kanns doch eigentlich bei c++ nicht wirklich sein, oder?</p>
<p>Ich hab auch schon bissel gegoogelt aber ich weiß eigentlich gar nicht so richtig nach was <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="😕"
    /> <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="😕"
    /> <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="😕"
    /></p>
<p>Vielleicht könnt ihr mir ja helfen....</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284970/kann-man-mit-ofstream-ohne-buffer-arbeiten-und-oder-alternativen-zu-spritf</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 16:08:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284970.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Apr 2011 08:38:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 08:46:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade dabei ein Prog zu schreiben welches ein Bin - File einließt, den Header auswertet und in einer Struktur ablegt.</p>
<p>Bis hier kein Problem. Jetzt muss der Header im Klartext in ein Ausgabefile un ich dachte, ich könne das einfach mittels:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 1024; i++){ 
fileoutstream &lt;&lt; &quot;String&quot; &lt;&lt; endl;
}
</code></pre>
<p>In wirklichkeit sind das viel mehr Strings und Variablen die in den Stream geschoben werden.<br />
Funktioniert nicht wirklich, es gehen immer wieder Daten verloren.</p>
<p>Meine Idee einen Buffer anlegen:</p>
<pre><code class="language-cpp">char* buffer;
</code></pre>
<p>und diesen befüllen und erst zum schluss in den Stream schieben. Leider fällt mir da immer nur sprinf() als Lösung ein. Aber das kanns doch eigentlich bei c++ nicht wirklich sein, oder?</p>
<p>Ich hab auch schon bissel gegoogelt aber ich weiß eigentlich gar nicht so richtig nach was <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="😕"
    /> <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="😕"
    /> <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="😕"
    /></p>
<p>Vielleicht könnt ihr mir ja helfen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047883</guid><dc:creator><![CDATA[schwarzklaus]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:46:45 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 08:45:57 GMT]]></title><description><![CDATA[<p>Ich habe ganz schwer das Gefühl, dass dein Problem ganz woanders liegt. Bei den Streams gehen keine &quot;Daten verloren&quot;. Jedenfalls nicht bei normalen Dateien auf einem normalen Computer.</p>
<p>Beschreib mal lieber dein ursprüngliches Problem und nicht deine Lösungsidee.</p>
<p>(Das Äquivalent von sprintf in C++ sind übrigens die Stringstreams. Aber das sollte eigentlich nicht nötig sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047886</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:45:57 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 08:58:15 GMT]]></title><description><![CDATA[<p>Danke schonmal für die schnelle Antwort, hier das Problem:</p>
<p>Ich habe diverse Structs, befüllt mit Strings, Ints, doubles,...<br />
Diese möchte ich in eine Datei speichern.<br />
dazu lege ich mir einen ofstream an und befülle ihn mit &lt;&lt; in zwei verschachtelten<br />
Schleifen.</p>
<p>Ich habe das gleiche auch mit std::cout versucht und komme zum selben Ergebnis.</p>
<p>Mal ein Bsp.:</p>
<pre><code class="language-cpp">for(int i=0; i&lt;size; i++){
out_stream &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;  
    &quot;String&quot;&lt;&lt;endl;
		out_stream.flush();
}
</code></pre>
<p>size habe ich mal auf 400 und mal auf 20000 gesetzt, das entstandene File<br />
ist aber immer gleich groß. Meine Frage ist jetzt wo stehen die Daten?<br />
ich habs mit und ohne flush() versucht aber das macht keinen Unterschied...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047897</guid><dc:creator><![CDATA[schwarzklaus]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 09:05:20 GMT]]></title><description><![CDATA[<p>Zeig mal ein vollständiges Beispiel. ofstreams verlieren keine Daten. Und sie arbeiten exakt so wie ostreams. Du hast irgendwo andere Fehler gemacht. Guckst du auch die richtige Datei an? Es gab hier schon unheimlich oft Fragen die darauf zurückzuführen waren, dass die Leute nicht wussten, wo sie ihre Dateien erstellen.</p>
<p>In endl ist übrigens ein flush enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047903</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 12 Apr 2011 09:05:20 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 09:45:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ofstream out_stream(destination_file.c_str());
	out_stream.precision(15);

	out_stream &lt;&lt; 	&quot;BigEndian: &quot; &lt;&lt; header.isBigEndian &lt;&lt; endl &lt;&lt;
			&quot;Version: &quot; &lt;&lt; header.version &lt;&lt; endl &lt;&lt;
			&quot;NameLen: &quot; &lt;&lt; header.nameLen &lt;&lt; 
			&quot; \ Name: &quot; &lt;&lt; header.name &lt;&lt; endl &lt;&lt;
			&quot;Checksum: &quot; &lt;&lt; header.withChecksum &lt;&lt; endl;

	if(header.additionalInfoLen &gt; 0){
		// TODO: make it
	}else{
		out_stream &lt;&lt;  &quot;addInfoLen: &quot; &lt;&lt; header.additionalInfoLen &lt;&lt; endl;
	}

	out_stream &lt;&lt;
					&quot;Timefac1: &quot; &lt;&lt; header.timefac1 &lt;&lt; endl &lt;&lt;
					&quot;Timefac2: &quot; &lt;&lt; header.timefac2 &lt;&lt; endl &lt;&lt;
					&quot;Timefac3: &quot; &lt;&lt; header.timefac3 &lt;&lt; endl;

	out_stream &lt;&lt; &quot;STARTTIME: &quot; &lt;&lt; header.startTime &lt;&lt;endl;

	out_stream.precision(3);

	out_stream &lt;&lt; 	&quot;Rate: &quot; &lt;&lt; header.sampleRate &lt;&lt; endl &lt;&lt;
					&quot;Variablenanzahl: &quot; &lt;&lt; header.variableCount &lt;&lt; endl;

	for(unsigned int i = 0; i &lt; 10000; i++){

		Variable temp = header.values[i];

		out_stream &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;
				&quot;String &quot; &lt;&lt; &quot;String &quot; &lt;&lt; &quot;String &quot;&lt;&lt;endl;

	out_stream.close();
	return 1;
</code></pre>
<p>Das ist jetzt der Inhalt der Methode, die die Datei schreiben soll.<br />
Die structs sind im Header definiert und werden in einer anderen Methode befüllt.</p>
<p>Struct:</p>
<pre><code class="language-cpp">struct Header{
	float version;
	string name;
	unsigned int nameLen;
	unsigned int isBigEndian;
	unsigned int withChecksum;
	unsigned int addInfoLen;
	unsigned int variableCount;
	double timefac1;
	double timefac2;
	double timefac3;
	double startTime;
	double sampleRate;
	vector&lt;Variable&gt; values;
};
</code></pre>
<p>Beispiel &quot;Füllung&quot; - aus einem char* Buffer (gefüllt aus einem Bin File)</p>
<pre><code class="language-cpp">// buffer = char* und ist filesize groß 

count = 0;

unsigned int currentInt = (buffer[++count]&lt;&lt;8)+buffer[++count];	
	//-------------------------------------------------------------------------------
	header.version = (float)currentInt/100;

	header.typeVendorLen = (buffer[++count]&lt;&lt;8)+buffer[++count];			
	for(unsigned int i = 0; i &lt; header.nameLen; i++){
		header.typeVendor = header.name + buffer[++count];
</code></pre>
<p>Nicht wundern, das erste Byte wird vorher ausgewertet. (ist hier bissel doof - aber nicht die endgültige Lösung)</p>
<p>Ich hoffe das bringt mehr licht ins dunkel.<br />
Das hier schonwieder die Schleife mit den Strings ist kann ich nicht ändern<br />
aber an dieser Stelle ist das Verhalten so wie von mir beschrieben.</p>
<p>PS.: Ich hab das richtige File und bin mir da auch sicher <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="🙂"
    /> aber hätte ja sein können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047926</guid><dc:creator><![CDATA[schwarzklaus]]></dc:creator><pubDate>Tue, 12 Apr 2011 09:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 10:12:33 GMT]]></title><description><![CDATA[<p>schwarzklaus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; 10000; i++){
</code></pre>
</blockquote>
<p>Ist die schließende Klammer an der richtigen Stelle (In deinem Codeauszug jedenfalls nicht)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047938</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:12:33 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 10:24:15 GMT]]></title><description><![CDATA[<p>in wirklichkeit ist sie an der richtigen Stelle <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 />
Ich hab mal nur das hier her kopiert was irgendwie nicht wirklich funzt, im Code bei mir ists zu Zeit n bissel unaufgeräumt durch die Fehlersucherei <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="😃"
    /> ist ja auch bald ostern <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047943</guid><dc:creator><![CDATA[schwarzklaus]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:24:15 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 10:52:05 GMT]]></title><description><![CDATA[<p>schwarzklaus schrieb:</p>
<blockquote>
<p>im Code bei mir ists zu Zeit n bissel unaufgeräumt</p>
</blockquote>
<p>Ich glaube, ich habe dein Problem gefunden.</p>
<p>Das ist kein Wunder, wenn bei unaufgeräumtem Code andere Sachen rauskommen als erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047956</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 12 Apr 2011 10:52:05 GMT</pubDate></item><item><title><![CDATA[Reply to kann man mit ofstream ohne Buffer arbeiten? und&#x2F;oder Alternativen zu spritf()? on Tue, 12 Apr 2011 11:16:24 GMT]]></title><description><![CDATA[<p>1. ist mein code nur unaufgeräumt weil ich gerade am debugen bin.<br />
2. hilft mir das nicht wirklich weiter<br />
3. 1. nehme ich zurück<br />
4. ich hab den Fehler gefunden -&gt; liegt nicht hier im Code, da liegt ein anderer</p>
<p>hier im Code ist falsch-&gt; Variable temp = header.values[i]; denn zum Testen waren nie so viele Values da <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>Ich war wohl n bissel zu voreilig, wenn jemand Zeit hat könnt ihr ja den Thread einfach löschen...</p>
<p>Danke an alle Antworter <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047973</guid><dc:creator><![CDATA[schwarzklaus]]></dc:creator><pubDate>Tue, 12 Apr 2011 11:16:24 GMT</pubDate></item></channel></rss>