<?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[.txt-datei parsen - Problem bei Ausgabe]]></title><description><![CDATA[<p>Hallo liebes Forum,</p>
<p>ich versuche gerade eine etwas komplexere .txt-Datei einzulesen und möchte diese dann in einem bestimmten Format wieder ausgeben. Ich habe quasi 2 Fälle in der Datei: einen Index mit 3 Ziffern und eine darauffolgende Zeichenkette als Inhalt. Getrennt werden diese beiden Teile durch ein ':'. Die switch-Anweisung die ich gebaut habe funktionier aber nur im Falle des Inhalts richtig und nicht im Falle des 3-stelligen Index.</p>
<p>Die .txt hat dieses Format</p>
<p>001:binambahnhof56748383</p>
<p>hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
#include &lt;fstream&gt;

struct titelsatz
	{
		char kategorie[3];
		char inhalt[200];
	};

enum zustand {inKategorie, inInhalt};

int main()
{
	struct titelsatz titel;
	char puffer[300], zeichen;
	int zaehler;
	enum zustand zustand;

	ifstream datei;

	datei.open(&quot;***.txt&quot;);

	zustand=inKategorie;
	zaehler=0;

	for (;;) 
	{
		datei.get(zeichen);
		if (datei.eof()) break;

		switch (zeichen)
		{
		    case ':':
				puffer[zaehler]='\0';
				zaehler=0;
				strncpy(titel.kategorie,puffer,3);
				zustand=inKategorie;
				break;

			case '\n':
				puffer[zaehler]='\0';
				zaehler=0;
				strcpy(titel.inhalt,puffer);

				cout &lt;&lt; &quot;Kategorie: &quot; &lt;&lt; titel.kategorie &lt;&lt; &quot; Inhalt: &quot; &lt;&lt; titel.inhalt &lt;&lt; endl;
				break;

			default:
				puffer[zaehler]=zeichen;
				zaehler++;
				break;
		}
	}
}
</code></pre>
<p>Vielleicht kann mir ja jemand helfen. Ich glaube das es was mit der strcpy-Funktion zu tun hat und die das Array von [3] überschreibt. Wäre für jede Antwort sehr dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264287/txt-datei-parsen-problem-bei-ausgabe</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 20:31:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264287.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Apr 2010 20:02:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 20:02:30 GMT]]></title><description><![CDATA[<p>Hallo liebes Forum,</p>
<p>ich versuche gerade eine etwas komplexere .txt-Datei einzulesen und möchte diese dann in einem bestimmten Format wieder ausgeben. Ich habe quasi 2 Fälle in der Datei: einen Index mit 3 Ziffern und eine darauffolgende Zeichenkette als Inhalt. Getrennt werden diese beiden Teile durch ein ':'. Die switch-Anweisung die ich gebaut habe funktionier aber nur im Falle des Inhalts richtig und nicht im Falle des 3-stelligen Index.</p>
<p>Die .txt hat dieses Format</p>
<p>001:binambahnhof56748383</p>
<p>hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
#include &lt;fstream&gt;

struct titelsatz
	{
		char kategorie[3];
		char inhalt[200];
	};

enum zustand {inKategorie, inInhalt};

int main()
{
	struct titelsatz titel;
	char puffer[300], zeichen;
	int zaehler;
	enum zustand zustand;

	ifstream datei;

	datei.open(&quot;***.txt&quot;);

	zustand=inKategorie;
	zaehler=0;

	for (;;) 
	{
		datei.get(zeichen);
		if (datei.eof()) break;

		switch (zeichen)
		{
		    case ':':
				puffer[zaehler]='\0';
				zaehler=0;
				strncpy(titel.kategorie,puffer,3);
				zustand=inKategorie;
				break;

			case '\n':
				puffer[zaehler]='\0';
				zaehler=0;
				strcpy(titel.inhalt,puffer);

				cout &lt;&lt; &quot;Kategorie: &quot; &lt;&lt; titel.kategorie &lt;&lt; &quot; Inhalt: &quot; &lt;&lt; titel.inhalt &lt;&lt; endl;
				break;

			default:
				puffer[zaehler]=zeichen;
				zaehler++;
				break;
		}
	}
}
</code></pre>
<p>Vielleicht kann mir ja jemand helfen. Ich glaube das es was mit der strcpy-Funktion zu tun hat und die das Array von [3] überschreibt. Wäre für jede Antwort sehr dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877997</guid><dc:creator><![CDATA[Milhouse_111]]></dc:creator><pubDate>Mon, 05 Apr 2010 20:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 20:42:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich glaube, du machst das viel zu kompliziert. Ich habe das mal so gemacht:</p>
<pre><code class="language-cpp">char index[4] = &quot;&quot;;
char str[300] = &quot;&quot;;

ifstream dat_ein;
dat_ein.open(&quot;Datei.txt&quot;,ios_base::in);

char x;
int loop=0;

for(loop=0;x!=':';loop++)
{
dat_ein.get(x);
if(x!=':')index[loop]=x;
}
index[loop] = '\0';

for(loop=0;x!='\n';loop++)
{
dat_ein.get(x);
if(x!='\n')str[loop]=x;
}
index[loop]='\0';

dat_ein.close();
</code></pre>
<p>So wird der Index in dem Array index gespeichert und der Text in dem Array str. Das Array index hat vier Elemente, damit noch Platz für das Nullterminierungszeichen bleibt.</p>
<p>MfG, Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878014</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Mon, 05 Apr 2010 20:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 20:44:24 GMT]]></title><description><![CDATA[<p>.. das ist immer noch zu kompliziert. Lese einfach den Index und den Inhalt und fertig:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

int main()
{
    using namespace std;
    ifstream datei(&quot;***.txt&quot;);
    int index;
    char doppelpunkt;
    string inhalt;
    if( datei &gt;&gt; index &gt;&gt; doppelpunkt &gt;&gt; inhalt )
    {
        // alles richtig gelesen
        // ....
    }
    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878015</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 05 Apr 2010 20:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 21:24:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a> Salomon:</p>
<p>Stimmt. Deine Lösung ist noch einfacher. Allerdings funktioniert sie nicht, wenn der Text nach dem Doppelpunkt ein Leerzeichen enthält. Außerdem wird bei deiner Lösung der Index nicht in einem String gespeichert, es fallen also führende Nullen weg, was eventuell nicht erwünscht ist.</p>
<p>Sollten allerdings keine Leerzeichen vorkommen, würde ich allerdings auch deine Lösung bevorzugen.</p>
<p>MfG, Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878028</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Mon, 05 Apr 2010 21:24:03 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 21:27:33 GMT]]></title><description><![CDATA[<p>gab es dafür nicht was von eatwhite?</p>
<pre><code class="language-cpp">if( datei &gt;&gt; index &gt;&gt; doppelpunkt &gt;&gt; eatwhite &gt;&gt; inhalt )
</code></pre>
<p>Und der index darf auch ein string sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878029</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 05 Apr 2010 21:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 21:42:27 GMT]]></title><description><![CDATA[<p>Jochen S. schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a> Salomon:</p>
<p>Stimmt. Deine Lösung ist noch einfacher. Allerdings funktioniert sie nicht, wenn der Text nach dem Doppelpunkt ein Leerzeichen enthält. Außerdem wird bei deiner Lösung der Index nicht in einem String gespeichert, es fallen also führende Nullen weg, was eventuell nicht erwünscht ist.</p>
</blockquote>
<p>Nun wir sollten Milhouse_111 fragen, was er denn gerne hätte. Ich ging davon aus, dass der Index eine Zahl sein soll und der Rest dahinter ein Wort ist, wie in dem Beispiel.<br />
Lesen bis zum Zeilenende ginge mit</p>
<pre><code class="language-cpp">getline( datei &gt;&gt; index &gt;&gt; doppelpunkt, inhalt )
</code></pre>
<p>volkard schrieb:</p>
<blockquote>
<p>gab es dafür nicht was von eatwhite?</p>
<pre><code class="language-cpp">if( datei &gt;&gt; index &gt;&gt; doppelpunkt &gt;&gt; eatwhite &gt;&gt; inhalt )
</code></pre>
<p>Und der index darf auch ein string sein.</p>
</blockquote>
<p>genau - eatwhite heißt std::ws; also in diesem Fall:</p>
<pre><code class="language-cpp">getline( datei &gt;&gt; index &gt;&gt; doppelpunkt &gt;&gt; ws, inhalt )
</code></pre>
<p>.. und falls index doch ein String sein soll:</p>
<pre><code class="language-cpp">string index;
    getline( datei, index, ':' );
    getline( datei &gt;&gt; ws, inhalt ); // 'inhalt' ohne führendes Leerzeichen, aber die nächste Zeile wird gelesen, falls hinter ':' ein Zeilenende kommt!
</code></pre>
<p>es gilt immer: lies das (den Typ) ein, was(den) Du im Programm haben willst.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878031</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 05 Apr 2010 21:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Mon, 05 Apr 2010 22:10:58 GMT]]></title><description><![CDATA[<p>Es könnte, denke ich, Sinn machen, das ganze in einen operator&gt;&gt; zu packen, um das ganze mit Standardalgorithmen verwenden zu können. Etwa so:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;

struct titelsatz {
  std::string kategorie;
  std::string inhalt;
};

std::istream &amp;operator&gt;&gt;(std::istream &amp;in, titelsatz &amp;ts) {
  std::getline(in, ts.kategorie, ':');
  std::getline(in, ts.inhalt);

  return in;
}

void print_titelsatz(titelsatz const &amp;ts) {
  std::cout &lt;&lt; &quot;Kategorie: &quot; &lt;&lt; ts.kategorie &lt;&lt; &quot; Inhalt: &quot; &lt;&lt; ts.inhalt &lt;&lt; std::endl;
}

int main() {
  std::ifstream in(&quot;datei.txt&quot;);

  std::for_each(std::istream_iterator&lt;titelsatz&gt;(in),
                std::istream_iterator&lt;titelsatz&gt;(),
                print_titelsatz);
}
</code></pre>
<p>Und bevor jemand fragt: Ich benutze hier eine Funktion print_titelsatz statt operator&lt;&lt;, weil ich der Ansicht bin, dass operator&lt;&lt; und operator&gt;&gt; symmetrisch sein sollten, also operator&lt;&lt; etwas ausgeben sollte, was operator&gt;&gt; wieder einlesen kann. Das ist aber eine Stilfrage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878042</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Mon, 05 Apr 2010 22:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Tue, 06 Apr 2010 09:06:54 GMT]]></title><description><![CDATA[<p>Erstmal vielen Dank für die zahlreichen Antworten und Lösungswege. Erstmal ja, die Kategorie (Index) darf und sollte als string gespeichert werden. Ich persönlich finde die Lösung von seldon ziemlich schick, auch wenn dort libraries benutzt werden die ich noch nicht kenne. Bin noch im Studium und noch nicht sehr weit. Habe meinen Fehler inzwischen herausgefunden. Das Array für Kategorie in dem struct is zu klein bemessen mit [3], sollte man eigentlich wissen, stand da einfach aufm Schlauch. Habe das Array jetzt auf [5] vergrössert und es werden für Kategorie bzw. Index immer nur alle Zeichen ausgegeben bis zu dem ':'.</p>
<p>Allerdings stehe ich jetzt vor dem Problem das es in der .txt-Datei auch Kategorien mit Unterkategorien gibt. das sieht dann so aus:</p>
<p>003.001:bineininhalt55884<br />
003.002:bineininhaltdergleichenunterkategorie8874764</p>
<p>Dieser Fall muss in der Ausgabe auch irgendwie beachtet werden. Naja, werde gleich mal weiter probieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878148</guid><dc:creator><![CDATA[Milhouse_111]]></dc:creator><pubDate>Tue, 06 Apr 2010 09:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Tue, 06 Apr 2010 13:48:33 GMT]]></title><description><![CDATA[<p>Das Problem mit den Unterketegorien könnte man so lösen:</p>
<p>Man liest die ersten drei Zeichen ein, dies ist dann der erste Index.<br />
Dann liest man das nächste Zeichen ein, sollte es sich bei dem Zeichen um ein '.' handeln, muss man weitere drei Zeichen einlesen, den zweiten Index.</p>
<p>Hier ein Beispielcode:</p>
<pre><code class="language-cpp">char index[4] = &quot;&quot;; 
char index2[4] = &quot;&quot;;
char str[300] = &quot;&quot;; 
bool bExisting = false;

ifstream dat_ein; 
dat_ein.open(&quot;Datei.txt&quot;,ios_base::in); 

char x; 
int loop=0; 

for(loop=0;x!=':'&amp;&amp;x!='.';loop++) 
{ 
dat_ein.get(x); 
if(x!=':'&amp;&amp;x!='.')index[loop]=x; 
else index[loop] = '\0'; 
} 

if(x=='.')
{
    for(loop=0;x!=':';loop++) 
    { 
    dat_ein.get(x); 
    if(x!=':')index2[loop]=x; 
    else index2[loop] = '\0'; 
    }
bExisting = true;
}

for(loop=0;x!='\n';loop++) 
{ 
dat_ein.get(x); 
if(x!='\n')str[loop]=x;
else index[loop]='\0'; 
} 

dat_ein.close();
</code></pre>
<p>Die Indizes werden in index und index2 gespeichet, der String in str.<br />
sollte es keine unterkategorie geben, bleibt index2 leer. Anhand der boolschen Variablen bExisting kann man sehen, ob es Unterkategorien gibt oder nicht.</p>
<p>MfG, Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878333</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Tue, 06 Apr 2010 13:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Tue, 06 Apr 2010 14:12:23 GMT]]></title><description><![CDATA[<p>An dieser Stelle würde ich bereits auf eine regex-Bibliothek zurückgreifen, beispielsweise <a href="http://www.boost.org/doc/libs/1_42_0/doc/html/xpressive.html" rel="nofollow">Boost.Xpressive</a>. Habt ihr formale Sprachen schon behandelt?</p>
<p>Naja, auf die Gefahr hin, damit in komplexere Materie einzusteigen, als momentan für dich geeignet ist (ggf. kannst du dir das später immer noch genauer ankucken, es ist auf jeden Fall praktisch zu kennen), ich finge das wohl etwa so an:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

#include &lt;boost/xpressive/xpressive.hpp&gt;

int main() {
  using namespace boost::xpressive;

  std::string line;
  std::ifstream in(&quot;datei.txt&quot;);

  sregex rex = (s1 = +_d) &gt;&gt; !('.' &gt;&gt; (s2 = +_d)) &gt;&gt; ':' &gt;&gt; (s3 = *_);

  while(std::getline(in, line)) {
    smatch m;

    if(regex_match(line, m, rex)) {
      std::cout &lt;&lt; &quot;K: &quot; &lt;&lt; m[1];
      if(m[2]) std::cout &lt;&lt; &quot; UK: &quot; &lt;&lt; m[2];
      std::cout &lt;&lt; &quot; I: &quot; &lt;&lt; m[3] &lt;&lt; '\n';
    } else {
      std::cout &lt;&lt; &quot;Fehler: &quot; &lt;&lt; line &lt;&lt; '\n';
    }
  }
}
</code></pre>
<p>Die Syntax ist ein bisschen gewöhnungsbedürftig (Operatorüberladung kann einen nur etwa so weit bringen), dafür kann der Compiler aber so eine Menge Arbeit schon erledigen, die zur Laufzeit nicht mehr getan werden muss.</p>
<p>Kurz erklärt:</p>
<p>_d matcht Ziffern,<br />
+<em>d matcht eine Folge von ein oder mehreren Ziffern.<br />
_ matcht irgendein Zeichen,<br />
*</em> matcht eine Folge von null oder mehr Zeichen.<br />
Der !-Operator kennzeichnet einen Ausdruck als optional.<br />
s1 = foo merkt sich den betreffenden submatch.</p>
<p>In Perl gesprochen entspricht der Ausdruck oben</p>
<pre><code>(\d+)(?:\.(\d+))?:(.*)
</code></pre>
<p>Oder, ohne die Submatcherei,</p>
<pre><code>\d+(\.\d+)?:.*
</code></pre>
<p>das nur der Übersichtlichkeit halber. Der große Vorteil gegenüber Fummelparsern ist, dass du dir um fehlerhafte Eingaben (so gut wie) keine Sorgen mehr machen musst - was die regex nicht matcht, wird schlicht als fehlerhaft verworfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878347</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 06 Apr 2010 14:12:23 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Tue, 06 Apr 2010 19:02:20 GMT]]></title><description><![CDATA[<p>seldons Vorschläge gehen in die richtige Richtung. boost.Xpressive habe ich noch nie benutzt. Es gibt ja auch noch <a href="http://www.boost.org/doc/libs/1_42_0/libs/regex/doc/html/index.html" rel="nofollow">boost.regex</a> und <a href="http://www.boost.org/doc/libs/1_42_0/libs/spirit/doc/html/index.html" rel="nofollow">boost.spirit</a> mit den Varianten Spirit Classic und Spirit V2.0 - irgendwann kann man da auch den Überblick verlieren ...</p>
<p>Der Vollständigkeit halber poste ich hier die Variante, die mit Standardmitteln auskommt und die Unterkategorien mit berücksichtigt. Man muss dazu noch wissen, dass der Manipulator setw() beim Einlesen von std::strings die maximale Stringlänge festlegt. Ich mache mir zu Nutze, dass die Kategorien immer aus 3Zeichen bestehen.</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;iomanip&gt; // setw
#include &lt;iterator&gt; // istream_iterator
#include &lt;string&gt;
#include &lt;vector&gt;

struct titelsatz 
{
    std::string kategorie;
    std::string unterKategorie;
    std::string inhalt;
};

std::istream&amp; operator&gt;&gt;( std::istream&amp; in, titelsatz&amp; ts ) 
{
    using namespace std;
    in &gt;&gt; std::setw(3) &gt;&gt; ts.kategorie;
    char c;
    string unterKategorie;
    if( in &gt;&gt; c &amp;&amp; c == '.' )
    {   // Unterkategorie folgt ...
        in &gt;&gt; std::setw(3) &gt;&gt; unterKategorie &gt;&gt; c;
    }
    if( in &amp;&amp; c == ':' )
    {
        swap( unterKategorie, ts.unterKategorie ); // garantiert, dass ts.unterKategorie leer ist, wenn keine gelesen wurde
        std::getline( in &gt;&gt; ws, ts.inhalt );
    }
    else
        in.setstate( ios_base::failbit ); // anderes Zeichen außer '.' oder ':'
    return in;
}

int main() 
{
    using namespace std;
    ifstream in(&quot;***.txt&quot;);
    vector&lt; titelsatz &gt; inhalte( (istream_iterator&lt;titelsatz&gt;(in)), istream_iterator&lt;titelsatz&gt;() );
    if( in.eof() ) // bis End-Of-File gelesen?
    {
        cout &lt;&lt; inhalte.size() &lt;&lt; &quot; Eintraege gelesen&quot; &lt;&lt; endl;
        // usw. ...
    }
    else
        cerr &lt;&lt; &quot;Lesefehler!&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Der Inhalt der Datei befindet sich danach im std::vector&lt;titelsatz &gt; 'inhalte'.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878490</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 06 Apr 2010 19:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Tue, 06 Apr 2010 19:38:55 GMT]]></title><description><![CDATA[<p>Boost.Spirit ist eine geniale Bibliothek, ich hielt es aber in diesem Zusammenhang für Overkill. Ich habe Boost.Xpressive Boost.Regex vor allem deshalb vorgezogen, weil ich damit mehr Erfahrung habe; zwar ist Boost.Xpressive mächtiger als Boost.Regex und erlaubt mir, Teile der Arbeit zur Compilezeit zu erledigen, aber die zusätzlichen Features wurden hier nicht gebraucht, und da die Regex nur einmal ausgewertet werden muss, dürfte der Laufzeitverlust vernachlässigbar sein. Auch ist die Regex-Bibliothek in TR1 stark von Boost.Regex inspiriert (sprich: nahezu identisch), also macht es wohl durchaus Sinn, sich damit auseinanderzusetzen - auch wenn dieser Teil von TR1 in der gcc noch nicht implementiert ist.</p>
<p>Letztendlich führen viele Wege ans Ziel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878505</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 06 Apr 2010 19:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to .txt-datei parsen - Problem bei Ausgabe on Tue, 27 Apr 2010 18:41:16 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich wollte jetzt kein neues Topic eröffnen, da der Titel nach wie vor passend ist <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>
<p>Die Ausgabe funktioniert soweit. Allerdings stellt sich gerade ein viel allgemeineres Problem.</p>
<p>Ich arbeite mit Visual Studio unter Vista. Das Problem liegt jetzt darin, dass der Datensatz der ausgelesen wird sehr lang ist -&gt; Die Ausgabe aber nur gut 1 Drittel des gewünschten Datensatzes widergibt/anzeigt.</p>
<p>Jetzt meine Frage: Gibt es in Visual-Studio vielleicht irgendwo eine Einstellung, wodurch sich das &quot;Ausgabe-Volumen&quot; vergrößern lässt?(Um Fehler im Prog. selber ausszuschließen, habe ich es bereits auf anderen Systemen und Rechnern testen lassen - dort wird die txt. VOLLSTÄNDIG ausgegeben! Es muss also eine Konfi-Sache in Visual sein...)</p>
<p>Wenn jetzt jemand verstanden hat, was ich meine, wäre das schon mal ein Anfang..;)</p>
<p>PS: um es vielleicht doch nochmal zu veranschaulichen:</p>
<p>-----&gt; die auszulesene txt:</p>
<pre><code>001: inhalt
004: inhalt
005: inhalt

006: inhalt
007: inhalt
008: inhalt

009: inhalt
012: inhalt
018: inhalt

001: inhalt
004: inhalt
005: inhalt

020: inhalt
022: inhalt
036: inhalt
</code></pre>
<p>-------&gt; die ausgabe unter Visual Studio:</p>
<pre><code>018: inhalt

001: inhalt
004: inhalt
005: inhalt

020: inhalt
022: inhalt
036: inhalt
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889115</guid><dc:creator><![CDATA[Milhouse_111]]></dc:creator><pubDate>Tue, 27 Apr 2010 18:41:16 GMT</pubDate></item></channel></rss>