<?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[fstreams - zu wenig speicher reserviert?]]></title><description><![CDATA[<p><strong>hallo</strong>,</p>
<p>ich arbeite an einem programm, das folgendes machen soll:<br />
mit diesem programm sollen verschiedene txt-dateien geöffnet werden können, aber alle vom gleichen aufbau, nur mal mehr werte, mal weniger..</p>
<p><strong>1.</strong> log.txt mit hilfe von istream einlesen. diese datei besteht aus hex-werten und text.<br />
<strong>2.</strong> textteile aus dieser datei &quot;rauslöschen&quot;(datei kürzen) und datei unter neuem namen cut.txt mit hilfe von ofstream speichern.<br />
3. mit hilfe der fstreams cut.txt einlesen und die zu benötigten werte mit hilfe des dateipositionszeigers entnehmen. bemerkung: die position der benötigten werte richtet sich nach einem in der log.txt vereinbarten aufbau.<br />
4.die entnommenen werte in int-werte umwandeln und wiederum in einer datei values.txt speichern.</p>
<p>bemerkungen:<br />
ich habe keine vectoren verwendet, nur mit strings und chars (getline + get) gearbeitet(auch weil ich von vectoren null ahnung hab, obwohl ich weiß, dass sie viele vorzüge haben)<br />
ich habe während des programmierens nur eine log.txt als test verwendet. diese log.txt ist 29,5 kb groß.<br />
das Programm funktioniert einwandfrei, die verlangten werte werden extrahiert und umgewandelt, alle dazu benötigten dateien erstellt.</p>
<p><strong>jetzt</strong> kommt das problem:</p>
<p>mit einer 1.1mbyte großen log.txt funktioniert es nicht.<br />
es wird nicht einmal die cut.txt erstellt, daher kommt mein verdacht, das nicht genug speicher für die ein-und ausgabestreams zur verfügung steht.</p>
<p>diese werden ganz normal aufgerufen (<strong>Punkt 1+2</strong>):</p>
<pre><code class="language-cpp">ifstream datei;
ofstream dateineu(&quot;cut.txt&quot;);
datei.open(&quot;log.txt&quot;, ios::in);
</code></pre>
<p>und dann weiter:</p>
<pre><code class="language-cpp">string zeile,start=&quot;versorgung&quot;,ende=&quot;0600&quot;;//Start und Ende der zu
  bool ign=false;                          //überspringenden Sequenz
  int i;
  if (datei)
  while(!datei.eof())
  {
    getline(datei,zeile);

    if(zeile.find(start)!=string::npos) ign=true; //Blockanfang gefunden
    if(zeile.find(ende) !=string::npos) ign=false;//Blockende gefunden
    if (!ign)
	dateineu=zeile;
  }
  else cout &lt;&lt; &quot;Datei konnte nicht geöffnet werden !&quot; &lt;&lt; endl;
  datei.close();
  dateineu.close();
</code></pre>
<p>mein gefühl sagt mir, ich muss die strings, die ich mit getline einlese, in einen vector stecken, aber ich weiß nicht, wie das funktionieren soll.<br />
was könnte noch das problem sein ?</p>
<p>liebe grüße maik <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/197678/fstreams-zu-wenig-speicher-reserviert</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 09:29:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197678.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Nov 2007 14:07:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:07:30 GMT]]></title><description><![CDATA[<p><strong>hallo</strong>,</p>
<p>ich arbeite an einem programm, das folgendes machen soll:<br />
mit diesem programm sollen verschiedene txt-dateien geöffnet werden können, aber alle vom gleichen aufbau, nur mal mehr werte, mal weniger..</p>
<p><strong>1.</strong> log.txt mit hilfe von istream einlesen. diese datei besteht aus hex-werten und text.<br />
<strong>2.</strong> textteile aus dieser datei &quot;rauslöschen&quot;(datei kürzen) und datei unter neuem namen cut.txt mit hilfe von ofstream speichern.<br />
3. mit hilfe der fstreams cut.txt einlesen und die zu benötigten werte mit hilfe des dateipositionszeigers entnehmen. bemerkung: die position der benötigten werte richtet sich nach einem in der log.txt vereinbarten aufbau.<br />
4.die entnommenen werte in int-werte umwandeln und wiederum in einer datei values.txt speichern.</p>
<p>bemerkungen:<br />
ich habe keine vectoren verwendet, nur mit strings und chars (getline + get) gearbeitet(auch weil ich von vectoren null ahnung hab, obwohl ich weiß, dass sie viele vorzüge haben)<br />
ich habe während des programmierens nur eine log.txt als test verwendet. diese log.txt ist 29,5 kb groß.<br />
das Programm funktioniert einwandfrei, die verlangten werte werden extrahiert und umgewandelt, alle dazu benötigten dateien erstellt.</p>
<p><strong>jetzt</strong> kommt das problem:</p>
<p>mit einer 1.1mbyte großen log.txt funktioniert es nicht.<br />
es wird nicht einmal die cut.txt erstellt, daher kommt mein verdacht, das nicht genug speicher für die ein-und ausgabestreams zur verfügung steht.</p>
<p>diese werden ganz normal aufgerufen (<strong>Punkt 1+2</strong>):</p>
<pre><code class="language-cpp">ifstream datei;
ofstream dateineu(&quot;cut.txt&quot;);
datei.open(&quot;log.txt&quot;, ios::in);
</code></pre>
<p>und dann weiter:</p>
<pre><code class="language-cpp">string zeile,start=&quot;versorgung&quot;,ende=&quot;0600&quot;;//Start und Ende der zu
  bool ign=false;                          //überspringenden Sequenz
  int i;
  if (datei)
  while(!datei.eof())
  {
    getline(datei,zeile);

    if(zeile.find(start)!=string::npos) ign=true; //Blockanfang gefunden
    if(zeile.find(ende) !=string::npos) ign=false;//Blockende gefunden
    if (!ign)
	dateineu=zeile;
  }
  else cout &lt;&lt; &quot;Datei konnte nicht geöffnet werden !&quot; &lt;&lt; endl;
  datei.close();
  dateineu.close();
</code></pre>
<p>mein gefühl sagt mir, ich muss die strings, die ich mit getline einlese, in einen vector stecken, aber ich weiß nicht, wie das funktionieren soll.<br />
was könnte noch das problem sein ?</p>
<p>liebe grüße maik <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1402513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402513</guid><dc:creator><![CDATA[maik, der c++ anfänger]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:07:30 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:12:30 GMT]]></title><description><![CDATA[<p>Sag blos, das Programm lässt sich compilieren? Da fällt mir schon auf Anhieb ein Fehler auf - einem Stream kann man keinen String zuweisen (Zeile 12).</p>
<p>(Ausgaben kannst du mit <code>dateineu&lt;&lt;zeile&lt;&lt;endl;</code> machen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402515</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:20:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const std::string beg(&quot;versorgung&quot;);
const std::string end(&quot;0600&quot;);

std::ifstream file_in(&quot;log.txt&quot;);
std::ofstream file_out(&quot;cut.txt&quot;);
if (!file_in) return false;

bool in_part(false);
std::string cur_line;
while (std::getline(file_in, cur_line))
{
    if (in_part == false &amp;&amp; cur_line.find(beg) != std::string::npos) in_part = true;
    if (in_part == true &amp;&amp; cur_line.find(end) != std::string::npos) in_part = false;
    if (in_part == false) file_out &lt;&lt; cur_line &lt;&lt; std::endl;
}
</code></pre>
<p>das ist so in etwa das was du da stehen hast einmal korrigiert ... geht aber wesentlich eleganter!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402523</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:20:01 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:23:53 GMT]]></title><description><![CDATA[<p>ähm ja ich meinte <strong>natürlich</strong>:</p>
<pre><code class="language-cpp">dateineu &lt;&lt; zeile &lt;&lt; endl;
</code></pre>
<p>hab mich nur verschrieben.<br />
<strong>nur so</strong> lässt sich das programm kompilieren <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="😉"
    /><br />
danke das du mich auf den fehler aufmerksam gemacht hast.</p>
<p>aber zurück zu meinem problem, ist das einigermaßen verständlich ?<br />
benötigen große text-dateien speicherallokation für ein - und ausgabestreams ?<br />
und muss ich vectoren nehmen, um mein ziel auch mit großen txt dateien zu realisieren?</p>
<p>liebe grüße maik <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1402527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402527</guid><dc:creator><![CDATA[maik, der c++ anfänger]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:33:49 GMT]]></title><description><![CDATA[<p>Naja das wäre schwachsinng, wenn du einen Vector nehmen würdest ... DANN würdest du für den kompletten Dateiinhalt Speicher aufm Heap anfordern müssen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402534</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:36:45 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const std::string beg(&quot;versorgung&quot;);
const std::string end(&quot;0600&quot;);

std::ifstream file_in(&quot;log.txt&quot;);
std::ofstream file_out(&quot;cut.txt&quot;);
if (!file_in) return false;

bool in_part(false);
std::string cur_line;
while (std::getline(file_in, cur_line))
{
    if (in_part == false &amp;&amp; cur_line.find(beg) != std::string::npos) in_part = true;
    if (in_part == true &amp;&amp; cur_line.find(end) != std::string::npos) in_part = false;
    if (in_part == false) file_out &lt;&lt; cur_line &lt;&lt; std::endl;
}
</code></pre>
<p>das ist so in etwa das was du da stehen hast einmal korrigiert ... geht aber wesentlich eleganter!</p>
</blockquote>
<p>danke für die schnelle antwort!<br />
komme damit aber leider der lösung meines problems nicht näher. <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 />
was kann die ursache dafür sein, dass die datei cut.txt mit hilfe einer log.txt (ca. 30kb) erstellt wird und bei einer log.txt(ca.1.1mbyte) nicht ??</p>
<p>@(D)Evil:<br />
übrigens wo ist bei dir der befehl zum öffnen von der log.txt ?<br />
ich seh nur den eingabestrom.</p>
<p>liebe grüße maik <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1402535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402535</guid><dc:creator><![CDATA[maik, der c++ anfänger]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:36:45 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 14:42:30 GMT]]></title><description><![CDATA[<p>maik, der c++ anfänger schrieb:</p>
<blockquote>
<p>was kann die ursache dafür sein, dass die datei cut.txt mit hilfe einer log.txt (ca. 30kb) erstellt wird und bei einer log.txt(ca.1.1mbyte) nicht ??</p>
</blockquote>
<p>Gibt das Programm eventuell noch eine Fehlermeldung, bevor es sich verabschiedet? Ansonsten solltest du es mal mit einem Debugger versuchen.</p>
<blockquote>
<p>übrigens wo ist bei dir der befehl zum öffnen von der log.txt ?<br />
ich seh nur den eingabestrom.</p>
</blockquote>
<p>Die wird genau wie die cut.txt per Konstruktor geöffnet <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/1402539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402539</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to fstreams - zu wenig speicher reserviert? on Tue, 13 Nov 2007 15:27:03 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Gibt das Programm eventuell noch eine Fehlermeldung, bevor es sich verabschiedet? Ansonsten solltest du es mal mit einem Debugger versuchen.</p>
</blockquote>
<p>'Rechteck.exe': 'C:\Dokumente und Einstellungen\vollandt\Eigene Dateien\Visual Studio Projects\Rechteck\Debug\Rechteck.exe' geladen, Symbole geladen.<br />
'Rechteck.exe': 'C:\WINNT\system32\NTDLL.DLL' geladen, Erforderliche DBG-Datei wurde nicht gefunden oder konnte nicht geladen werden.<br />
'Rechteck.exe': 'C:\WINNT\system32\KERNEL32.DLL' geladen, Erforderliche DBG-Datei wurde nicht gefunden oder konnte nicht geladen werden.<br />
Der Thread 'Win32 Thread' (0x3d4) hat mit Code -1073741510 (0xc000013a) geendet.<br />
Das Programm &quot;[1628] Rechteck.exe: Systemeigen&quot; wurde mit Code -1073741510 (0xc000013a) beendet.</p>
<p>komisch, wenn ich haltepunkte setze, dann <strong>wird</strong> die datei cut.txt auch bei der 1.1mbyte großen log.txt erstellt. wenn ichs normal durchrasseln lasse, kommt <strong>keine</strong> fehlermeldung weiter, die cut.txt wird aber <strong>nicht</strong> erstellt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>liebe grüße maik <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1402575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402575</guid><dc:creator><![CDATA[maik, der c++ anfänger]]></dc:creator><pubDate>Tue, 13 Nov 2007 15:27:03 GMT</pubDate></item></channel></rss>