<?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[CSV Datei einlesen]]></title><description><![CDATA[<p>Guten Morgen,<br />
CSV Dateien sind ja wie TXT dateien, nur dass sie Datensätze zeilenweise abspeichern und diese mit ; voneinander trennen.</p>
<p>Ich würde gerne das Datum (singular?) auslesen welches vor dem 8ten ; jeder Zeile kommt. Wie registriere ich, dass es sich um ein ; handelt?<br />
Speicher ich dann alles in char?<br />
Kann ich dann im Zeilendurchlauf nach auffinden des 8ten Zeichens wieder die Zeichen davor betrachten oder ist ein Zeilendurchlauf nur in die rechte Richtung möglich?</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325871/csv-datei-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 16:18:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325871.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 May 2014 06:29:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 06:29:39 GMT]]></title><description><![CDATA[<p>Guten Morgen,<br />
CSV Dateien sind ja wie TXT dateien, nur dass sie Datensätze zeilenweise abspeichern und diese mit ; voneinander trennen.</p>
<p>Ich würde gerne das Datum (singular?) auslesen welches vor dem 8ten ; jeder Zeile kommt. Wie registriere ich, dass es sich um ein ; handelt?<br />
Speicher ich dann alles in char?<br />
Kann ich dann im Zeilendurchlauf nach auffinden des 8ten Zeichens wieder die Zeichen davor betrachten oder ist ein Zeilendurchlauf nur in die rechte Richtung möglich?</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400249</guid><dc:creator><![CDATA[Kromann]]></dc:creator><pubDate>Thu, 22 May 2014 06:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 07:15:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Kann ich dann im Zeilendurchlauf nach auffinden des 8ten Zeichens wieder die Zeichen davor betrachten oder ist ein Zeilendurchlauf nur in die rechte Richtung möglich?</p>
</blockquote>
<p>Natürlich. Dafür nimmt man<a href="http://en.cppreference.com/w/cpp/io/basic_istream/seekg" rel="nofollow"> <code>std::istream::seekg</code> </a>.<br />
Es ist aber recht umständlich. Am Besten liest du die Datei von Links nach Rechts aus.</p>
<blockquote>
<p>Wie registriere ich, dass es sich um ein ; handelt?</p>
</blockquote>
<p>Indem du das mit dem gelesenen Zeichen vergleichst <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>Eigentlich macht das aber<a href="http://en.cppreference.com/w/cpp/io/basic_istream/ignore" rel="nofollow"> <code>std::basic_istream::ignore</code> </a>für dich, mit dem du alle Zeichen bis zum nächsten Delimitter überspringst (wobei der Delimitter in deinem Fall <code>';'</code> wäre).</p>
<blockquote>
<p>Speicher ich dann alles in char?</p>
</blockquote>
<p>Wie wäre es mit<a href="http://en.cppreference.com/w/cpp/chrono/c/tm" rel="nofollow"> <code>std::tm</code> </a>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400253</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 22 May 2014 07:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 07:17:14 GMT]]></title><description><![CDATA[<p>nehme dieses Helferlein:</p>
<pre><code>#include &lt;istream&gt;
#include &lt;limits&gt; // numeric_limits

struct skip_delimiter
{
    skip_delimiter( char c, int anz )
        : zeichen_( c )
        , anz_( anz )
    {}
    char zeichen_;
    int anz_;
};
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, skip_delimiter skippy )
{
    for( ; skippy.anz_ &gt; 0; --skippy.anz_ )
        in.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), skippy.zeichen_ );
    return in;
}
</code></pre>
<p>und wende ihn so an:</p>
<pre><code>ifstream file(&quot;datei.csv&quot;);
    int datum;
    if( file &gt;&gt; skip_delimiter(';',7) &gt;&gt; datum ) // vor dem 8'ten ist nach dem 7'ten ';'
        cout &lt;&lt; datum &lt;&lt; endl;
</code></pre>
<p>oder siehe hier: <a href="http://www.c-plusplus.net/forum/p2292030#2292030" rel="nofollow">http://www.c-plusplus.net/forum/p2292030#2292030</a></p>
<p>Kromann schrieb:</p>
<blockquote>
<p>Speicher ich dann alles in char?</p>
</blockquote>
<p>besser nicht! Lese gleich das aus der Datei, was Du auch programm-intern benötigst.</p>
<p>Kromann schrieb:</p>
<blockquote>
<p>Kann ich dann im Zeilendurchlauf nach auffinden des 8ten Zeichens wieder die Zeichen davor betrachten oder ist ein Zeilendurchlauf nur in die rechte Richtung möglich?</p>
</blockquote>
<p>möglich, aber nicht zu empfehlen. Besser Du liest es gleich vorher ein. Was genau willst Du lesen und wie ist das Format der CSV-Datei?</p>
<p>Kromann schrieb:</p>
<blockquote>
<p>Danke im Voraus</p>
</blockquote>
<p>besser nachher Feedback geben <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>Nachtrag: das Helferlein <code>skip_delimiter</code> zählt auch Trennzeichen';', die ggf.. in Hochkomma eingeschlossen sind!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400254</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 22 May 2014 07:17:14 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 07:29:44 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Kromann  schrieb:</p>
<blockquote>
<p>Speicher ich dann alles in char?</p>
</blockquote>
<p>Wie wäre es mit<a href="http://en.cppreference.com/w/cpp/chrono/c/tm" rel="nofollow"> <code>std::tm</code> </a>?</p>
</blockquote>
<p>Ich glaube hier hat Dich die Einzahl des Worts Daten auf den Holzweg geschickt... <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/2400257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400257</guid><dc:creator><![CDATA[Datum]]></dc:creator><pubDate>Thu, 22 May 2014 07:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 10:42:24 GMT]]></title><description><![CDATA[<p>Datum schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Kromann  schrieb:</p>
<blockquote>
<p>Speicher ich dann alles in char?</p>
</blockquote>
<p>Wie wäre es mit<a href="http://en.cppreference.com/w/cpp/chrono/c/tm" rel="nofollow"> <code>std::tm</code> </a>?</p>
</blockquote>
<p>Ich glaube hier hat Dich die Einzahl des Worts Daten auf den Holzweg geschickt... <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>
</blockquote>
<p>Jetzt verstehe ich das (singular?) im Text. (Dachte das bezog sich auf die Weise in der Eingelesen wird) Also ein <code>vector</code> von <code>tm</code> s?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Bitte korrigiere dein Helferlein. Das ist naemlich inkorrekt.</p>
<p>Ich mache mal einen Vorschlag:</p>
<pre><code>struct skip_delimiter
{
    skip_delimiter( char c, std::streamsize anz )
        : zeichen_( c )
        , anz_( anz )
    {}
    char zeichen_;
    std::streamsize anz_; // Hier lag der Fehler

    // Extra Helfer-Funktionen
    std::istream&amp; ignore_one( std::istream&amp; is ) const
    {
        return is.ignore( std::numeric_limits&lt;std::streamsize&gt;::max(), zeichen_ );
    }

    std::istream&amp; ignore_all( std::istream&amp; is ) const
    {
        std::streamsize s = anz_;
        while( s-- )
            ignore_one( is );
        return is;
    }
};
</code></pre>
<p>(ungetestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400284</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 22 May 2014 10:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 13:37:41 GMT]]></title><description><![CDATA[<p>Dann besser gleich einen Parser verwenden, der korrekt auch mit dem Feldbegrenzerzeichen (und weiteren Features) umgehen kann, z.B.<br />
<a href="http://code.google.com/p/csv-parser-cplusplus/" rel="nofollow">csv-parser-cplusplus</a><br />
<a href="http://code.google.com/p/fast-cpp-csv-parser/" rel="nofollow">fast-cpp-csv-parser</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400322</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 22 May 2014 13:37:41 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen on Thu, 22 May 2014 15:39:36 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p><a href="http://code.google.com/p/csv-parser-cplusplus/" rel="nofollow">csv-parser-cplusplus</a></p>
</blockquote>
<p>Ieh!</p>
<pre><code>csv_parser file_parser;

        /* Define how many records we're gonna skip. This could be used to skip the column definitions. */
        file_parser.set_skip_lines(1);

        /* Specify the file to parse */
        file_parser.init(filename);
</code></pre>
<p>Initialisierung über Funktionen und nicht Konstruktor? Und <code>printf</code> im Beispiel. Deutet auf nichts gutes hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400359</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 22 May 2014 15:39:36 GMT</pubDate></item></channel></rss>