<?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-Dateien lesen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin auf der Suche nach einer kleinen lib zum Parsen von csv-Datien (comma seperated values).<br />
Im Netz gibt es dazu zwar jede Menge Treffer, aber nix gescheites in C++.</p>
<p>Nun ist CSV an sich ja nicht 100% spezifiziert. Deshalb mal die Mindestanforderungen meinerseits, die wohl oft so gefordert werden:</p>
<p>Eine Zeile könnte Daten enthalten im Stil von</p>
<p>test1, 405, &quot;Hello, World!&quot; , -5.6 , &quot;600&quot;, 7</p>
<p>dabei gilt:<br />
- verschiedene Datensätze werden durche Komma (allgemeiner: durch ein definerbares Trennzeichen) getrennt.<br />
- Whitespace wird ignoriert, außer er ist &quot;gequotet&quot;.<br />
- Durch Quotes (definierbar) werden Strings definiert, in denen sowohl Whitespace als auch Trennzeichen übernommen werden (bis zum nächsten Quote).<br />
- Strings ohne Whitespace oder Trennzeichen müssen aber nicht unbedingt gequoted werden.</p>
<p>Erste Frage: Kennt jemand oder hat jemand selbst ne kleine Utility-lib geschrieben die solches CSV lesen kann.</p>
<p>Wenn nicht, mach ich mich selbst an die Arbeit.<br />
Damit das ganze größtmögliche Allgemeinheit erlangt, aber ohne zuviel aufwand, wie würdet ihr vorgehen?<br />
Ich könnte mir volgendes minimales Interface vorstellen:</p>
<pre><code class="language-cpp">class t_csv_reader {
public:
	//arbeitet auf einem std::istream als Eingabe
	t_csv_reader(std::istream&amp; input, char comma=',', char quote='&quot;')

	//liefert den nächsten string zurück (ohne Quotes oder Trennzeichen)
	std::string pull();

	//ähnlich ios:good zum testen ob weitere Daten gelesen werden können
	bool good()
};
</code></pre>
<p>Wär das sinnvoll?<br />
Dabei wird die Interpretation der Daten völlig dem User überlassen, es werden also stets strings zurückgelifert. Eventuelle Konversion in numerische Werte muss der User selbst machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265795/csv-dateien-lesen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 20:31:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265795.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Apr 2010 19:24:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CSV-Dateien lesen on Wed, 28 Apr 2010 19:24:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin auf der Suche nach einer kleinen lib zum Parsen von csv-Datien (comma seperated values).<br />
Im Netz gibt es dazu zwar jede Menge Treffer, aber nix gescheites in C++.</p>
<p>Nun ist CSV an sich ja nicht 100% spezifiziert. Deshalb mal die Mindestanforderungen meinerseits, die wohl oft so gefordert werden:</p>
<p>Eine Zeile könnte Daten enthalten im Stil von</p>
<p>test1, 405, &quot;Hello, World!&quot; , -5.6 , &quot;600&quot;, 7</p>
<p>dabei gilt:<br />
- verschiedene Datensätze werden durche Komma (allgemeiner: durch ein definerbares Trennzeichen) getrennt.<br />
- Whitespace wird ignoriert, außer er ist &quot;gequotet&quot;.<br />
- Durch Quotes (definierbar) werden Strings definiert, in denen sowohl Whitespace als auch Trennzeichen übernommen werden (bis zum nächsten Quote).<br />
- Strings ohne Whitespace oder Trennzeichen müssen aber nicht unbedingt gequoted werden.</p>
<p>Erste Frage: Kennt jemand oder hat jemand selbst ne kleine Utility-lib geschrieben die solches CSV lesen kann.</p>
<p>Wenn nicht, mach ich mich selbst an die Arbeit.<br />
Damit das ganze größtmögliche Allgemeinheit erlangt, aber ohne zuviel aufwand, wie würdet ihr vorgehen?<br />
Ich könnte mir volgendes minimales Interface vorstellen:</p>
<pre><code class="language-cpp">class t_csv_reader {
public:
	//arbeitet auf einem std::istream als Eingabe
	t_csv_reader(std::istream&amp; input, char comma=',', char quote='&quot;')

	//liefert den nächsten string zurück (ohne Quotes oder Trennzeichen)
	std::string pull();

	//ähnlich ios:good zum testen ob weitere Daten gelesen werden können
	bool good()
};
</code></pre>
<p>Wär das sinnvoll?<br />
Dabei wird die Interpretation der Daten völlig dem User überlassen, es werden also stets strings zurückgelifert. Eventuelle Konversion in numerische Werte muss der User selbst machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889671</guid><dc:creator><![CDATA[scrontch]]></dc:creator><pubDate>Wed, 28 Apr 2010 19:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to CSV-Dateien lesen on Wed, 28 Apr 2010 20:03:20 GMT]]></title><description><![CDATA[<p>Hallo scrontch,</p>
<p>Suche hier im Forum nach 'csv' - da wirst Du schon einiges finden. Unter anderen einen Beitrag von mir zum <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1766897.html" rel="nofollow">Lesen aus einer csv-Datei</a>.</p>
<p>scrontch schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class t_csv_reader {
public:
	//arbeitet auf einem std::istream als Eingabe
	t_csv_reader(std::istream&amp; input, char comma=',', char quote='&quot;')

	//liefert den nächsten string zurück (ohne Quotes oder Trennzeichen)
	std::string pull();

	//ähnlich ios:good zum testen ob weitere Daten gelesen werden können
	bool good()
};
</code></pre>
<p>Wär das sinnvoll?<br />
Dabei wird die Interpretation der Daten völlig dem User überlassen, es werden also stets strings zurückgelifert. Eventuelle Konversion in numerische Werte muss der User selbst machen.</p>
</blockquote>
<p>.. besser ist, wenn der User gleich die Typen lesen kann, die er braucht - also int und double oder auch Datum und Zeit.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889687</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 28 Apr 2010 20:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to CSV-Dateien lesen on Thu, 29 Apr 2010 07:15:14 GMT]]></title><description><![CDATA[<p>Kann man natürlich machen. Ich wollte es aber erstmal so simpel wie möglich machen.<br />
Aussderdem, was wäre denn die beste Lösung um offen für spätere Erweiterungen (durch den User) zu sein.<br />
Könnte man evtl. selbst von istream ableiten??<br />
So könnte man operator&lt;&lt;(istream&amp;) für seine eigenen Typen überladen.<br />
Ist es sinnvoll von istream abzuleiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889809</guid><dc:creator><![CDATA[scrontch]]></dc:creator><pubDate>Thu, 29 Apr 2010 07:15:14 GMT</pubDate></item></channel></rss>