<?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[Textdatei zeilenweise auslesen bzw. durchsuchen]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich möchte gerne eine Textdatei auslesen und darin enthaltene Informationen in einer Variablen speichern.<br />
Die Textdatei sieht in etwa so aus:</p>
<p>----nächste info----<br />
1: Name = Hans<br />
2: Alter = 50<br />
----nächste info----<br />
1: Name = Peter<br />
2: Alter = 54</p>
<p>Nun möchte ich die Textdatei beispielsweise mit &quot;Name&quot; durchsuchen und mir dann den ersten gefundenen Wert in eine Variable speichern, in diesem Fall also &quot;Hans&quot;.</p>
<p>Wie ist das am besten zu bewerkstelligen? Hoffe, dass mir jemand weiterhelfen kann...</p>
<p>Mit freundlichen Grüßen<br />
Everready</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/263836/textdatei-zeilenweise-auslesen-bzw-durchsuchen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 13:44:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/263836.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Mar 2010 14:46:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Textdatei zeilenweise auslesen bzw. durchsuchen on Sun, 28 Mar 2010 14:46:08 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich möchte gerne eine Textdatei auslesen und darin enthaltene Informationen in einer Variablen speichern.<br />
Die Textdatei sieht in etwa so aus:</p>
<p>----nächste info----<br />
1: Name = Hans<br />
2: Alter = 50<br />
----nächste info----<br />
1: Name = Peter<br />
2: Alter = 54</p>
<p>Nun möchte ich die Textdatei beispielsweise mit &quot;Name&quot; durchsuchen und mir dann den ersten gefundenen Wert in eine Variable speichern, in diesem Fall also &quot;Hans&quot;.</p>
<p>Wie ist das am besten zu bewerkstelligen? Hoffe, dass mir jemand weiterhelfen kann...</p>
<p>Mit freundlichen Grüßen<br />
Everready</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874593</guid><dc:creator><![CDATA[Everready]]></dc:creator><pubDate>Sun, 28 Mar 2010 14:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei zeilenweise auslesen bzw. durchsuchen on Sun, 28 Mar 2010 15:31:50 GMT]]></title><description><![CDATA[<p>Ich würde da wahrscheinlich einfach mal alles in einen string einelesen und dann z.B mit <a href="http://www.boost.org/doc/libs/1_42_0/libs/regex/doc/html/index.html" rel="nofollow">boost.regex</a> nach den gewünschten Sachen suchen.</p>
<p>Bei einfachen Sachen reicht die <a href="http://www.cplusplus.com/reference/string/string/find/" rel="nofollow">string::find</a> Funktion allerdings auch schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874617</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 28 Mar 2010 15:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei zeilenweise auslesen bzw. durchsuchen on Sun, 28 Mar 2010 15:48:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erstmal danke für die Antwort!<br />
Allerdings werde ich daraus nicht wikrlich schlau...<br />
Bis jetzt habe ich nur zeilenweise per getline ausgelesen. Eventuell steh ich auch grad aufm schlauch!<br />
Könntest du mir eventuell bitte ein kurzes beispiel posten.</p>
<p>Mit freundlichen Grüßen<br />
Everready</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874631</guid><dc:creator><![CDATA[Everready]]></dc:creator><pubDate>Sun, 28 Mar 2010 15:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei zeilenweise auslesen bzw. durchsuchen on Sun, 28 Mar 2010 16:40:10 GMT]]></title><description><![CDATA[<p>Hallo Everready,</p>
<p>um eine derartige Textdatei zu lesen, brauchst Du weder einen Parser für reguläre Ausdrücke noch musst Du dazu string-Funktionen bemühen. In C++ ist std::istream die Schnittstelle zum Lesen von Text aller Art. Die bietet schon einiges an, mit dem sich ein Großteil der in der Praxis vorkommenden Formate lesen lassen.</p>
<p>In Deinem Fall seine Dir drei Dinge empfohlen (die Variable 'in' sei ein std::istream):<br />
1.)</p>
<pre><code class="language-cpp">in.ignore( numeric_limits&lt; streamsize &gt;::max(), '=' );
</code></pre>
<p>überliest alles bis ein '=' im Text erscheint oder End-Of-File<br />
2.)</p>
<pre><code class="language-cpp">std::string wort; in &gt;&gt; wort;
</code></pre>
<p>liest ein(!) Wort ein - ohne Zwischenraum bzw. Leerzeichen<br />
3.)</p>
<pre><code class="language-cpp">int zahl; in &gt;&gt; zahl;
</code></pre>
<p>liest eine (Ganz)zahl ein.</p>
<p>Wenn Du jezt noch für die Kombination von 'Name' und 'Alter' eine Klasse oder Struktur baust (ist sehr zu empfehlen), dann bietet sich ein sogenannter Streaming-Operator an, um diese Struktur zu lesen. D.h. das Ziel ist es zu schreiben:</p>
<pre><code class="language-cpp">Person einePeron; // Person sei eine struct mit Name und Alter
   in &gt;&gt; einePerson; // liest die Daten der Person vom Text-Stream.
</code></pre>
<p>Damit das compiliert, schreibt man:</p>
<pre><code class="language-cpp">struct Person
{
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Person&amp; p );
    // ... 
};
</code></pre>
<p>In dieser (friend-)Funtion ist dann das Einlesen zu implementieren.</p>
<p>Alles zusammen ergibt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;limits&gt;

struct Person
{
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Person&amp; p )
    {
        using namespace std;
        in.ignore( numeric_limits&lt; streamsize &gt;::max(), '=' ) &gt;&gt; p.m_name; 
        in.ignore( numeric_limits&lt; streamsize &gt;::max(), '=' ) &gt;&gt; p.m_alter; 
        return in;
    }
//private:
    std::string m_name;
    int m_alter;
};

int main() 
{
    using namespace std;
    vector&lt; Person &gt; personen;
    ifstream in( &quot;input.txt&quot; ); // Datei 'input.txt' öffnen
    for( Person p; in &gt;&gt; p; ) // lese bis Fehler oder End-Of-File
        personen.push_back( p );
    // -- die Personendaten befinden sich jetzt im vector 'personen' ... falls kein Fehler aufgetreten ist

    return 0;
}
</code></pre>
<p>Hab' ich noch vergessen zu erwähnen: std::ifstream ist natürlich auch ein std::istream</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874662</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 28 Mar 2010 16:40:10 GMT</pubDate></item></channel></rss>