<?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[Eine Funktion wie fscanf in der STL bzw. ifstream]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will eine Datei laden und einlesen. Die Datei sieht ungefähr so aus:</p>
<pre><code>Num 5
[Ball Count: Mass, Radius, ....]
</code></pre>
<p>Ich kann die erste Zeile lesen. Jetzt suche ich aber Funktion wie fscanf, wo ich nach dem Keyword [Ball %d: %d, %d, ...] suchen und auslesen kann. Aber ich weiß nicht wie ich das anstellen soll und getline gibt mir die ganze Zeile.</p>
<p>Kann mir einer verraten wie die Funktion lautet bei ifstream, da ich nicht gerne fopen benutzen möchte.</p>
<p>Vielen Dank schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246888/eine-funktion-wie-fscanf-in-der-stl-bzw-ifstream</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 20:45:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246888.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Aug 2009 10:38:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 10:38:44 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will eine Datei laden und einlesen. Die Datei sieht ungefähr so aus:</p>
<pre><code>Num 5
[Ball Count: Mass, Radius, ....]
</code></pre>
<p>Ich kann die erste Zeile lesen. Jetzt suche ich aber Funktion wie fscanf, wo ich nach dem Keyword [Ball %d: %d, %d, ...] suchen und auslesen kann. Aber ich weiß nicht wie ich das anstellen soll und getline gibt mir die ganze Zeile.</p>
<p>Kann mir einer verraten wie die Funktion lautet bei ifstream, da ich nicht gerne fopen benutzen möchte.</p>
<p>Vielen Dank schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754441</guid><dc:creator><![CDATA[STLNoob]]></dc:creator><pubDate>Mon, 03 Aug 2009 10:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 10:50:32 GMT]]></title><description><![CDATA[<p>Parser bauen oder Regular Expressions bemühen.Für beides gibts was bei boost.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754450</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Mon, 03 Aug 2009 10:50:32 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 10:57:01 GMT]]></title><description><![CDATA[<p>Ich will ja einen Parser schreiben, aber ich suche ja eine Funktion von ifstream oder string, wo ich halt testen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754453</guid><dc:creator><![CDATA[STLNoob]]></dc:creator><pubDate>Mon, 03 Aug 2009 10:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 10:58:51 GMT]]></title><description><![CDATA[<p>Ich würde bei fscanf bleiben. Ist doch gerade für solche Fälle ziemlich praktisch und bietet eine angenehme Syntax. Und man spart sich den eigenen Parser-Bau, weil man bloß keine C-Funktionen nutzen will...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754455</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 03 Aug 2009 10:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 11:11:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::ifstream reader(...);
//...
std::string id;
char delimiter;
int count
//...
reader &gt;&gt; id &gt;&gt; count &gt;&gt; delimiter &gt;&gt; mass &gt;&gt; radius;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1754460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754460</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 03 Aug 2009 11:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 11:22:11 GMT]]></title><description><![CDATA[<p>STLNoob schrieb:</p>
<blockquote>
<p>Kann mir einer verraten wie die Funktion lautet bei ifstream, da ich nicht gerne fopen benutzen möchte.</p>
</blockquote>
<p>Selber basteln ist vielleicht auch eine Option:</p>
<pre><code class="language-cpp">ifstream in(&quot;meinInputFile.txt&quot;);
    int num;
    in &gt;&gt; Word(&quot;Num&quot;) &gt;&gt; num;
    {
        Bracket&lt;'[',']'&gt; check( in );
        int count, mass, radius, foo;
        in &gt;&gt; Word(&quot;Ball&quot;) &gt;&gt; count &gt;&gt; Char&lt;':'&gt; &gt;&gt; mass &gt;&gt; Char&lt;','&gt; &gt;&gt; radius &gt;&gt; Char&lt;','&gt; &gt;&gt; foo;
    }
    if( in )
        // alles korrekt gelesen
</code></pre>
<p>Das sind dann die von Dir benötigten Funktionen:</p>
<pre><code class="language-cpp">struct Word
{
    explicit Word( const std::string&amp; ref ) : m_ref( ref ) {}
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, const Word&amp; w )
    {
        std::string ref;
        if( in &gt;&gt; ref &amp;&amp; ref != w.m_ref )
            in.setstate( std::ios_base::failbit );
        return in;
    }
    std::string m_ref;
};

template&lt; char C &gt;
std::istream&amp; Char( std::istream&amp; in )
{
    char c;
    if( in &gt;&gt; c &amp;&amp; c != C )
        in.setstate( std::ios_base::failbit );
    return in;
}

template&lt; char Open, char Close &gt;
struct Bracket // : boost::noncopyable
{
    explicit Bracket( std::istream&amp; in ) : m_in( in &gt;&gt; Char&lt; Open &gt; ) {}
    ~Bracket() { m_in &gt;&gt; Char&lt; Close &gt;; }
private:
    std::istream&amp; m_in;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1754468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754468</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Mon, 03 Aug 2009 11:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 13:43:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich würde bei fscanf bleiben. Ist doch gerade für solche Fälle ziemlich praktisch und bietet eine angenehme Syntax. Und man spart sich den eigenen Parser-Bau, weil man bloß keine C-Funktionen nutzen will...</p>
</blockquote>
<p>Die Syntax find ich eher gruselig. Warum ich davon abraten würde ist aber die Fehleranfälligkeit. Wenn die Typen im Formatstring nicht mit dem Inhalt der Datei übereinstimmen kanns knallen. Das gilt übrigens auch wenn man unbedarft direkt aus nem ifstream in z.B nen int streamt. Deshalb lieber richte Parser bauen, die können dann auch fehlerhafte Eingaben ab. Oder aber wenn ausreicht eben RegEx.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754558</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Mon, 03 Aug 2009 13:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Mon, 03 Aug 2009 15:10:51 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<p>Wenn die Typen im Formatstring nicht mit dem Inhalt der Datei übereinstimmen kanns knallen.</p>
</blockquote>
<p>Ja, dann hat man einen Fehler beim Programmieren gemacht, den man schleunigst beheben sollte (insofern ist ein 'Knallen' u.U. gar nicht so schlecht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754621</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 03 Aug 2009 15:10:51 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Funktion wie fscanf in der STL bzw. ifstream on Tue, 04 Aug 2009 06:21:33 GMT]]></title><description><![CDATA[<p>Oder beim Schreiben der Konfigdatei? Oder aber ein böser Schelm nutzt sowas aus? Das ist schlicht und einfach nicht robust.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754906</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Tue, 04 Aug 2009 06:21:33 GMT</pubDate></item></channel></rss>