<?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 und verarbeiten]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich will eine Funktion schreiben, die eine beliebige Spalte einer .csv-Datei in einem Vektor speichert. Folgende Funktion habe ich geschrieben, jedoch stürzt das Programm ab...</p>
<p>Was habe ich da falsch gemacht?</p>
<pre><code class="language-cpp">vector&lt;double&gt; readValues(const char* filename,int wspalte){
// Holt die Werte aus der Datei und schreibt sie in einen Vector
    vector&lt;double&gt; values;
    ifstream f(filename);
    string s;  
    int zeile = 0;
    int spalte = 1;
    double value;
    while(!f.eof()){                            // Solange noch Zeilen in der Datei
        while(spalte!=wspalte){                 // Solange Spalte != Wunschspalte
            getline( f, s, ';');                // Lese Zelle der Spalte
            spalte++;                           // Springe zur nächsten Spalte
        }
            spalte = 0;
            stringstream ss (s);                // Schreibe Wunschzelle in vector und springe in nächste Zeile
            ss &gt;&gt; value;
            values[zeile] = value;
            zeile++;
    }
    return values;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/301202/csv-datei-einlesen-und-verarbeiten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 16:07:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301202.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Mar 2012 18:13:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 21 Mar 2012 18:13:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich will eine Funktion schreiben, die eine beliebige Spalte einer .csv-Datei in einem Vektor speichert. Folgende Funktion habe ich geschrieben, jedoch stürzt das Programm ab...</p>
<p>Was habe ich da falsch gemacht?</p>
<pre><code class="language-cpp">vector&lt;double&gt; readValues(const char* filename,int wspalte){
// Holt die Werte aus der Datei und schreibt sie in einen Vector
    vector&lt;double&gt; values;
    ifstream f(filename);
    string s;  
    int zeile = 0;
    int spalte = 1;
    double value;
    while(!f.eof()){                            // Solange noch Zeilen in der Datei
        while(spalte!=wspalte){                 // Solange Spalte != Wunschspalte
            getline( f, s, ';');                // Lese Zelle der Spalte
            spalte++;                           // Springe zur nächsten Spalte
        }
            spalte = 0;
            stringstream ss (s);                // Schreibe Wunschzelle in vector und springe in nächste Zeile
            ss &gt;&gt; value;
            values[zeile] = value;
            zeile++;
    }
    return values;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2193778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193778</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 21 Mar 2012 18:13:19 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 21 Mar 2012 18:26:21 GMT]]></title><description><![CDATA[<p>Spätestens in Zeile 17 greifst du auf nicht existierende Indizes zu. Außerdem sind noch ein paar andere Fehler drin, die ich unten in meinem Code stillschweigend berichtige.</p>
<p>Eine recht einfache Version <a href="http://www.c-plusplus.net/forum/p2193436#2193436" rel="nofollow">für die Werner mich bestimmt haut (und Pi zufrieden grinst)</a> wäre (ungetestet, sondern eben schnell hier m Forum programmiert):</p>
<pre><code class="language-cpp">vector&lt;double&gt; readValues(const char* filename,int wspalte)
{
 ifstream in(filename);

 vector&lt;double&gt; ergebnis;
 for(string zeile; getline(in, zeile);)
  {
    stringstream zeilenparser(zeile);
    for (int i = 0; i &lt; wspalte; ++i)  // Die erste Spalte hat in dieser Zählweise den Index 0
     zeilenparser.ignore(zeile.length(), ';');
    double wert;
    zeilenparser &gt;&gt; wert;
    ergebnis.push_back(wert);
  }
 return ergebnis;
}
</code></pre>
<p>Wenn du mehrere Spalten nacheinander liest, solltest du auch unbedingt einen Stream übergeben, anstatt immer wieder die Datei neu zu öffnen und schließen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193781</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 21 Mar 2012 18:26:21 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Thu, 22 Mar 2012 10:17:16 GMT]]></title><description><![CDATA[<p>Statt stringstream würde ich istringstream verwenden. Ausserdem noch eine kleine Korrektur.<br />
Statt:</p>
<pre><code>zeilenparser &gt;&gt; wert;
    ergebnis.push_back(wert);
</code></pre>
<p>besser:</p>
<pre><code>if (zeilenparser &gt;&gt; wert)
      ergebnis.push_back(wert);
</code></pre>
<p>Wenn das einlesen nämlich fehl schlägt, dann wird ein nicht initialisierter Wert übernommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194058</guid><dc:creator><![CDATA[ich bins]]></dc:creator><pubDate>Thu, 22 Mar 2012 10:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Thu, 22 Mar 2012 21:20:18 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Eine recht einfache Version <a href="http://www.c-plusplus.net/forum/p2193436#2193436" rel="nofollow">für die Werner mich bestimmt haut (und Pi zufrieden grinst)</a> wäre (ungetestet, sondern eben schnell hier m Forum programmiert):</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Hallo Javun, hallo SeppJ,</p>
<p>was haltet Ihr denn hier von?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;limits&gt;

// -- ein Manipulator, der 'columns' Spalten, die mit 'D' getrennt sind, überspringt
template&lt; char D &gt;
struct skipcolumns
{
    explicit skipcolumns( int columns ) : m_columns( columns ) {}
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, skipcolumns sc )
    {  
        for( int c = 0; c &lt; sc.m_columns; ++c ) 
            in.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), D );
        return in;
    }
private:
    int m_columns;
};
// --   überliest den Rest einer Zeile
std::istream&amp; skipline( std::istream&amp; in )
{
    return in.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), '\n' );
}

std::vector&lt; double &gt; readValues( const char* filename, int wspalte )
{
    using namespace std;
    vector&lt; double &gt; values;
    ifstream f(filename);
    // Bem.: Indizierung der Spalten beginnt mit 0
    for( double value; f &gt;&gt; skipcolumns&lt;';'&gt;( wspalte-1 ) &gt;&gt; value &gt;&gt; skipline; )
        values.push_back( value );
    return values;
}

int main()
{
    using namespace std;
    vector&lt; double &gt; values = readValues( &quot;input.txt&quot;, 3 );
    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194380</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 22 Mar 2012 21:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Sat, 24 Mar 2012 15:28:25 GMT]]></title><description><![CDATA[<p>Hallo Werner,</p>
<p>wie sähe denn die elegante Lösung aus, wenn der Typ von <code>values</code> beliebig sein soll?</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
std::vector&lt; T &gt; readValues( const char* filename, int wspalte )
{
    using namespace std;
    vector&lt; T &gt; values;
    ifstream f(filename);
    // Bem.: Indizierung der Spalten beginnt mit 0
    for( T value; f &gt;&gt; skipcolumns&lt;';'&gt;( wspalte-1 ) &gt;&gt; value &gt;&gt; skipline; )
        values.push_back( value );
    return values;
}

int main()
{
    using namespace std;
    vector&lt; string &gt; values = readValues&lt; string &gt;( &quot;input.txt&quot;, 3 );
    return 0;
}
</code></pre>
<p>Bei <code>std::string</code> hat man nun das Problem, dass der Rest einer Zeile nicht mehr überlesen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2194951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2194951</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 24 Mar 2012 15:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Sun, 25 Mar 2012 21:40:52 GMT]]></title><description><![CDATA[<p>Gugelmoser schrieb:</p>
<blockquote>
<p>wie sähe denn die elegante Lösung aus, wenn der Typ von <code>values</code> beliebig sein soll?<br />
...<br />
Bei <code>std::string</code> hat man nun das Problem, dass der Rest einer Zeile nicht mehr überlesen wird.</p>
</blockquote>
<p>Hallo Gugelmoser,</p>
<p>Verwendet man bei obigen Konstrukt std::string ohne sonstige Änderungen wird das Wort gelesen, was in dieser Spalte beginnt. Das endet spätestens mit dem Zeilenende oder vorher, wenn dort noch irgendwo ein Space in der Zeile auftaucht. Selbst in ersterem Fall würde 'skipline' korrekt das verbleibende EOL ('\n') überlesen.</p>
<p>Das Problem ist doch eher, dass evt. zu viel oder zu wenig in 'value' steht.<br />
Wenn die Zeile lautet:</p>
<pre><code>Spalte1;Spalte2;dritte-Spalte;egal;noch;was
</code></pre>
<p>so wird der Text &quot;dritte-Spalte;egal;noch;was&quot; nach value eingelesen, obwohl man vielleicht nur &quot;dritte-Spalte&quot; wollte.<br />
Steht in der Zeile</p>
<pre><code>Spalte1;Spalte2;dritte Spalte;egal;noch;was
</code></pre>
<p>landet nur &quot;dritte&quot; in 'value' - also auch falsch.</p>
<p>Die Lösung wäre ein Manipulator, wie z.B. <a href="http://www.c-plusplus.net/forum/p2193393#2193393" rel="nofollow">line aus diesem Beitrag</a>. Man muss dann nur noch zwischen dem Typ des Manipulators und dem Typ unterscheiden, der gelesen wird. Zunächst selektiere ich so weit möglich den Vorgang des Lesens des Wertes in eine eigenen Funktion - vielleicht so:</p>
<pre><code class="language-cpp">namespace detail
{
    template&lt; typename T &gt;
    bool read( std::istream&amp; in, T&amp; value )
    {
        return !(in &gt;&gt; value).fail();
    }
}
template&lt;typename T&gt;
std::vector&lt; T &gt; readValues( const char* filename, int wspalte )
{
    using namespace std;
    vector&lt; T &gt; values;
    ifstream f(filename);
    // Bem.: Indizierung der Spalten beginnt mit 0
    for( T value; f &gt;&gt; skipcolumns&lt;';'&gt;( wspalte-1 ); f &gt;&gt; skipline )
        if( detail::read&lt; T &gt;( f, value ) )
            values.push_back( value );
    return values;
}
</code></pre>
<p>bis hier ist noch alles wie vorher. Dann führe ich eine Eigenschaft is_manipulator ein und spezialisiere dann das Einlesen.</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
struct is_manipulator : std::integral_constant&lt; bool, false &gt; // erfordert #include &lt;type_traits&gt;
{};
</code></pre>
<p>Jetzt biete ich im namespace detail eine zweite Funktion an, die das Einlesen per Manipulator realisiert. Gleichzeitig brauche ich noch eine <a href="http://www.boost.org/doc/libs/1_49_0/libs/mpl/doc/refmanual/metafunction.html" rel="nofollow">Meta-Funktion</a>, die aus dem Typ 'T' den einzulesenden Typ 'V' bestimmt. Wenn T kein Manipulator ist, sind T und V natürlich identisch.</p>
<pre><code class="language-cpp">namespace detail
{
    template&lt; typename T, typename V &gt;
    typename std::enable_if&lt; !is_manipulator&lt; T &gt;::value, bool &gt;::type read( std::istream&amp; in, V&amp; value )
    {
        return !(in &gt;&gt; value).fail();
    }
    template&lt; typename T, typename V &gt;
    typename std::enable_if&lt; is_manipulator&lt; T &gt;::value, bool &gt;::type read( std::istream&amp; in, V&amp; value )
    {
        return !(in &gt;&gt; T( value )).fail();
    }

    // --  Meta-Funktion value_to_read&lt; T &gt;::type bestimmt den einzulesenden Typ
    template&lt; typename T, typename Enabler = void &gt;
    struct value_to_read;
    template&lt; typename T &gt;
    struct value_to_read&lt; T, typename std::enable_if&lt; !is_manipulator&lt; T &gt;::value &gt;::type &gt;
    {
        typedef T type;
    };
    template&lt; typename T &gt;
    struct value_to_read&lt; T, typename std::enable_if&lt; is_manipulator&lt; T &gt;::value &gt;::type &gt;
    {
        typedef typename T::value_type type;
    };
}
</code></pre>
<p>Jetzt kann man einem konkreten Manipulator die Eigenschaft 'is_manipulator' geben und den value_type natürlich. Hier am Beispiel eines column_readers für std::string</p>
<pre><code class="language-cpp">template&lt; char D &gt;
struct column_reader
{
    typedef std::string value_type;
    explicit column_reader( std::string&amp; txt ) : m_txt( txt ) {}
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, column_reader r )
    {
        return getline( in, r.m_txt, D );
    }
    std::string&amp; m_txt;
};
template&lt; char D &gt;
struct is_manipulator&lt; column_reader&lt; D &gt; &gt; : std::integral_constant&lt; bool, true &gt;
{};
</code></pre>
<p>Die Template-Funktion read_values und ihr Aufruf ist natürlich noch anzupassen.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
std::vector&lt; typename detail::value_to_read&lt; T &gt;::type &gt; readValues( const char* filename, int wspalte )
{
    using namespace std;
    typedef typename detail::value_to_read&lt; T &gt;::type value_type;
    vector&lt; value_type &gt; values;
    ifstream f(filename);
    // Bem.: Indizierung der Spalten beginnt mit 0
    for( value_type value; f &gt;&gt; skipcolumns&lt;';'&gt;( wspalte-1 ); f &gt;&gt; skipline )
        if( detail::read&lt; T &gt;( f, value ) )
            values.push_back( value );
    return values;
}

int main()
{
    using namespace std;
    vector&lt; string &gt; values = readValues&lt; column_reader&lt;';'&gt; &gt;( &quot;input.txt&quot;, 3 );
    return 0;
}
</code></pre>
<p>Das sieht vielleicht in diesem Beispiel völlig overengineered aus. Wir benutzen eine ähnlich Konstruktion aber tatsächlich in produktivem Code, wobei aber 'read_values&lt;&gt;' eine komplette Lib zum Lesen von Typen aller Art aus Konfigurationsdateien ist.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195392</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 25 Mar 2012 21:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Mon, 26 Mar 2012 17:39:42 GMT]]></title><description><![CDATA[<p>Danke dir, Werner. <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/2195656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195656</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 26 Mar 2012 17:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 04 Apr 2012 13:58:27 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Spätestens in Zeile 17 greifst du auf nicht existierende Indizes zu. Außerdem sind noch ein paar andere Fehler drin, die ich unten in meinem Code stillschweigend berichtige.</p>
<p>Eine recht einfache Version <a href="http://www.c-plusplus.net/forum/p2193436#2193436" rel="nofollow">für die Werner mich bestimmt haut (und Pi zufrieden grinst)</a> wäre (ungetestet, sondern eben schnell hier m Forum programmiert):</p>
<pre><code class="language-cpp">vector&lt;double&gt; readValues(const char* filename,int wspalte)
{
 ifstream in(filename);
 
 vector&lt;double&gt; ergebnis;
 for(string zeile; getline(in, zeile);)
  {
    stringstream zeilenparser(zeile);
    for (int i = 0; i &lt; wspalte; ++i)  // Die erste Spalte hat in dieser Zählweise den Index 0
     zeilenparser.ignore(zeile.length(), ';');
    double wert;
    zeilenparser &gt;&gt; wert;
    ergebnis.push_back(wert);
  }
 return ergebnis;
}
</code></pre>
<p>Wenn du mehrere Spalten nacheinander liest, solltest du auch unbedingt einen Stream übergeben, anstatt immer wieder die Datei neu zu öffnen und schließen.</p>
</blockquote>
<p>Das kann doch gar nicht funktionieren, es wird nachdem &quot;;&quot; einfach alles in wert geschrieben und nicht &quot;nur&quot; die Spalte...Gibt es noch eine andere Möglichkeit, oder muss ich halt nach einem ; suchen und alles dahinter löschen, damit in Wert nur noch die Spalte steht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Vielen Dank für das ausführlichen Code, jedoch verstehe ich leider gar nicht was Du da machst. Auch ist mir nicht ganz klar wie ich das &quot;D&quot; nun durch ein Semikolon wie bei mir der Fall ersetzen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198673</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 13:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 04 Apr 2012 14:25:12 GMT]]></title><description><![CDATA[<p>Javun schrieb:</p>
<blockquote>
<p>Das kann doch gar nicht funktionieren, es wird nachdem &quot;;&quot; einfach alles in wert geschrieben und nicht &quot;nur&quot; die Spalte...</p>
</blockquote>
<p>In einem double kann kein ';' vorkommen. Deshalb wird auch nicht zu viel in <code>wert</code> eingelesen, weil das Einlesen stoppt, sobald ein Zeichen kommt, das nicht zu einer double-Repräsentation passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198716</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 04 Apr 2012 14:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 04 Apr 2012 14:43:07 GMT]]></title><description><![CDATA[<p>Hmm...Leider funktioniert die Funktion aber nicht.</p>
<p>Wo liegt der Fehler:</p>
<pre><code class="language-cpp">vector&lt;double&gt; readCSV(const char* filename,int wspalte)
{
    ifstream in(filename);
    vector&lt;double&gt; ergebnis;
    string zeile;
    while (getline(in, zeile)){
               stringstream zeilenparser(zeile);
               for (int i = 0; i &lt; wspalte; ++i){
                   zeilenparser.ignore(zeile.length(), ';');
                   }
               double wert = 0;
               if (zeilenparser &gt;&gt; wert){
                  ergebnis.push_back(wert);
                  }
               }
    return ergebnis;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2198723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198723</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 14:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 04 Apr 2012 15:31:22 GMT]]></title><description><![CDATA[<p>Javun schrieb:</p>
<blockquote>
<p>Hmm...Leider funktioniert die Funktion aber nicht.</p>
</blockquote>
<p>Hallo Javun,</p>
<p>'funktioniert nicht' ist nun mal keine ausreichende Fehlerbeschreibung. Der Code oben lässt sich übersetzen und enthält keinen offensichtlichen Fehler.<br />
Also muss der &quot;Fehler&quot; an Deinen Erwartungen an diesen Code liegen - die kennt aber außer Dir niemand.</p>
<p>- wie sieht die CSV-Datei aus ? - bitte poste mal 2-3 Zeilen davon<br />
- welche Spalte möchtest Du lesen?<br />
- welche Werte sollen anschließend in dem vector stehen?</p>
<p>.. versuche mal, so richtig konkret zu antworten <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>Gruß<br />
Werner</p>
<p>PS.: haben die Zahlen in der CSV-Datei als Dezimaltrenner vielleicht ein Komma? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198735</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 04 Apr 2012 15:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 04 Apr 2012 15:53:53 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Javun schrieb:</p>
<blockquote>
<p>Hmm...Leider funktioniert die Funktion aber nicht.</p>
</blockquote>
<p>Hallo Javun,</p>
<p>'funktioniert nicht' ist nun mal keine ausreichende Fehlerbeschreibung. Der Code oben lässt sich übersetzen und enthält keinen offensichtlichen Fehler.<br />
Also muss der &quot;Fehler&quot; an Deinen Erwartungen an diesen Code liegen - die kennt aber außer Dir niemand.</p>
<p>- wie sieht die CSV-Datei aus ? - bitte poste mal 2-3 Zeilen davon<br />
- welche Spalte möchtest Du lesen?<br />
- welche Werte sollen anschließend in dem vector stehen?</p>
<p>.. versuche mal, so richtig konkret zu antworten <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>Gruß<br />
Werner</p>
<p>PS.: haben die Zahlen in der CSV-Datei als Dezimaltrenner vielleicht ein Komma? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Hier mir als Beispiel einige Zeilen aus der .csv-Datei:</p>
<pre><code>1;0,1;0,0000001;0,00069141;0,00000001;0,00000009;170;219827982,5;1,52633E-08;5,32351E-10
2;0,2;0,0000001;0,000719846;0,00000002;0,00000008;170;422288361,7;2,11549E-08;2,77123E-10
3;0,3;0,0000001;0,000736571;0,00000003;0,00000007;170;619049561,4;2,56135E-08;1,89041E-10
4;0,4;0,0000001;0,000749848;0,00000004;0,00000006;170;810784289,5;2,93129E-08;1,44336E-10
5;0,5;0,0000001;0,000765191;0,00000005;0,00000005;170;993158843,2;3,24426E-08;1,17832E-10
6;0,6;0,0000001;0,000786943;0,00000006;0,00000004;170;1158849086;3,50445E-08;1,00984E-10
7;0,7;0,0000001;0,000818453;0,00000007;0,00000003;170;1299939550;3,71166E-08;9,0024E-11
8;0,8;0,0000001;0,000861895;0,00000008;0,00000002;170;1410763624;3,86664E-08;8,2952E-11
9;0,9;0,0000001;0,0009183;0,00000009;0,00000001;170;1489624629;3,97324E-08;7,85605E-11
</code></pre>
<p>Ich erwarte z.B. bei wzeile = 10 den Wert 170 zurück. Warum genau das nicht funktioniert konnte ich bisher leider nicht herausfinden.</p>
<p>Edit: Jetzt bin ich auch drauf gekommen nach deinem Tipp <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="🙂"
    /> Scheint wirklich am Komma zu liegen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198745</guid><dc:creator><![CDATA[Javun]]></dc:creator><pubDate>Wed, 04 Apr 2012 15:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to CSV Datei einlesen und verarbeiten on Wed, 04 Apr 2012 16:24:30 GMT]]></title><description><![CDATA[<p>Javun schrieb:</p>
<blockquote>
<p>Ich erwarte z.B. bei wzeile = 10 den Wert 170 zurück.</p>
</blockquote>
<p>Meinst du wspalte = 10? Aber es gibt doch gar nicht 11 Spalten. &quot;170&quot; steht in Spalte 6, wenn man von 0 aus durchzählt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2198760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2198760</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 04 Apr 2012 16:24:30 GMT</pubDate></item></channel></rss>