<?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[Zeilenumbrüche einlesen! Edit String to double]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem.</p>
<p>Ich habe eine Liste von Dezimalzahlen(mit Komma getrennt)untereinander und möchte alle kommas in Punkte verwandeln.<br />
Denn am Ende will ich mit den Zahlen als doubles rechnen.</p>
<p>Wenn ich jetzt alles als char einlese, Komma durch Punkt ersetze und wieder reinschreibe, dann fehlen die Zeilenumbrüche...</p>
<p>Mein Code ist im Moment einfach nur</p>
<pre><code class="language-cpp">while(fin.good()){
        fin&gt;&gt; c;
        if(c==',') c='.';
        fout&lt;&lt;c;
    }
</code></pre>
<p>Würde mich sehr über eure Hilfe freuen.</p>
<p>Grüße,<br />
Slabic</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285286/zeilenumbrüche-einlesen-edit-string-to-double</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 10:27:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285286.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Apr 2011 17:18:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 18:13:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem.</p>
<p>Ich habe eine Liste von Dezimalzahlen(mit Komma getrennt)untereinander und möchte alle kommas in Punkte verwandeln.<br />
Denn am Ende will ich mit den Zahlen als doubles rechnen.</p>
<p>Wenn ich jetzt alles als char einlese, Komma durch Punkt ersetze und wieder reinschreibe, dann fehlen die Zeilenumbrüche...</p>
<p>Mein Code ist im Moment einfach nur</p>
<pre><code class="language-cpp">while(fin.good()){
        fin&gt;&gt; c;
        if(c==',') c='.';
        fout&lt;&lt;c;
    }
</code></pre>
<p>Würde mich sehr über eure Hilfe freuen.</p>
<p>Grüße,<br />
Slabic</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050674</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 18:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:22:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">while ( !fin.eof() )
{ 
    std::string line;
    std::getline(fin, line);
    for ( int i = 0; i &lt; line.length(); i++ )
    {
       if ( line[i] == ',' ) 
           line[i] = '.';
    }
    fout &lt;&lt; line &lt;&lt; &quot;\n&quot;;
}
</code></pre>
<p>Habs jetzt nicht getestet, aber so sollte das funktionieren.<br />
Btw solltest IMHO du auf eof() prüfen und nicht ob ein failbit gesetzt wurde mit good().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050679</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:28:46 GMT]]></title><description><![CDATA[<p>wooow, VIELEN Dank.</p>
<p>Du glaubst nicht, wie glücklich mich das gerade macht!!^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050683</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:30:09 GMT]]></title><description><![CDATA[<p>Slabic schrieb:</p>
<blockquote>
<p>wooow, VIELEN Dank.</p>
<p>Du glaubst nicht, wie glücklich mich das gerade macht!!^^</p>
</blockquote>
<p>Verstehst du auch was da steht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050684</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:37:16 GMT]]></title><description><![CDATA[<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Slabic schrieb:</p>
<blockquote>
<p>wooow, VIELEN Dank.</p>
<p>Du glaubst nicht, wie glücklich mich das gerade macht!!^^</p>
</blockquote>
<p>Verstehst du auch was da steht?</p>
</blockquote>
<p>Ja,<br />
wir lesen jede Zeile aus, speichern sie über getline in line rein.<br />
Gehen Line mit der schleife durch, ersetzen alle Kommas und fügen eben einen Zeilenumbruch hinzu. Und das wiederholen wir solange noch elemente in der Datei sind. Also iterativ alle Zeilen durchgehen.</p>
<p>Richtig?</p>
<p>Ich hatte es ähnlich mit fin.getline(...) versucht gehabt, aber iwas hatte ich wohl falsch gemacht.<br />
Aber jetzt passts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050689</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:37:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:37:29 GMT]]></title><description><![CDATA[<p>Slabic schrieb:</p>
<blockquote>
<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Slabic schrieb:</p>
<blockquote>
<p>wooow, VIELEN Dank.</p>
<p>Du glaubst nicht, wie glücklich mich das gerade macht!!^^</p>
</blockquote>
<p>Verstehst du auch was da steht?</p>
</blockquote>
<p>Ja,<br />
wir lesen jede Zeile aus, speichern sie über getline in line rein.<br />
Gehen Line mit der schleife durch, ersetzen alle Kommas. Und das wiederholen wir solange noch elemente in der Datei sind.</p>
<p>Richtig?</p>
</blockquote>
<p>Richtig.<br />
Man könnte das ganze jetzt auch noch mit std::string::find_first_of() optimieren, so kann man sich nutzlose cycles sparen. Aber das darfste selber rausfinden. Je nach Größe der Dateien wäre das empfohlen oder sinnlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050691</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:41:46 GMT]]></title><description><![CDATA[<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Slabic schrieb:</p>
<blockquote>
<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Slabic schrieb:</p>
<blockquote>
<p>wooow, VIELEN Dank.</p>
<p>Du glaubst nicht, wie glücklich mich das gerade macht!!^^</p>
</blockquote>
<p>Verstehst du auch was da steht?</p>
</blockquote>
<p>Ja,<br />
wir lesen jede Zeile aus, speichern sie über getline in line rein.<br />
Gehen Line mit der schleife durch, ersetzen alle Kommas. Und das wiederholen wir solange noch elemente in der Datei sind.</p>
<p>Richtig?</p>
</blockquote>
<p>Richtig.<br />
Man könnte das ganze jetzt auch noch mit std::string::find_first_of() optimieren, so kann man sich nutzlose cycles sparen. Aber das darfste selber rausfinden. Je nach Größe der Dateien wäre das empfohlen oder sinnlos.</p>
</blockquote>
<p>naja, Es sind nur knapp 250 2stellige zahlen. Daher lohnt es sich wahrscheinlich eher nicht. ^^</p>
<p>Der Code oben funktioniert ja sogar (logischerweise) bei mehreren Spalten, das ist großartig.</p>
<p>Gibt es eine Möglichkeiten, bei mehreren Spalten, bestimmte Spalten auszulesen?</p>
<p>Ich hatte da nur die ignore-funktion gesehen, mit der man sich das evtl. zusammenbasteln kann.</p>
<p>Geht das auch eleganter?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050693</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:45:17 GMT]]></title><description><![CDATA[<p>Bestimmte Spalten auslesen ist schon etwas anspruchsvoller. Wenn garantiert immer ein Leerzeichen die Spalten trennt, dann würde ich immer das nächste Leerzeichen suchen und damit die Spalte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050697</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 17:59:27 GMT]]></title><description><![CDATA[<p>Ja, ich hatte das zuerst so versucht, einen Leerzeichen_counter einzusetzen.<br />
Und dann eben mit modulo immer das entsprechende Element zu erhalten.</p>
<p>Das hatte aber iwie nicht so ganz geklappt, da hab' ich einfach mit excel die Spalte isoliert. <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/2050699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050699</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 17:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 18:16:15 GMT]]></title><description><![CDATA[<p>Hallo, nochmal<br />
kannst du( oder auch wer anders) mir noch helfen, bei der Konvertierung der Daten in double-variablen?</p>
<p>Also wenn ich das jetzt genauso wieder einlese. Dann hab ich ja den String line.</p>
<p>Wie konvertiere ich das jetzt in double?</p>
<p>Atof ?</p>
<p>Beim Googeln stoße ich auf &quot;Atof ist nicht &quot;gern gesehen&quot; &quot;.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050723</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 18:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 18:23:39 GMT]]></title><description><![CDATA[<p>Stichwort: Stringstreams</p>
<p>Lg freeG</p>
<p>EDIT: hier der Code</p>
<pre><code class="language-cpp">// du ließt deine Zeile in ein String namens line ein
istringstream in( line );
double value;
in &gt;&gt; value;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2050728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050728</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Sun, 17 Apr 2011 18:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 18:39:54 GMT]]></title><description><![CDATA[<p>Was fr33g sagte.<br />
Man kann allerdings auch boost::lexical_cast mit boost::tokenizer verwenden:</p>
<pre><code class="language-cpp">while ( !fin.eof() )
{
    std::string line;
    std::getline(fin, line);
    for ( int i = 0; i &lt; line.length(); i++ )
    {
       if ( line[i] == ',' )
           line[i] = '.';
    }
    // Du sagtest ja, es sind mehrere Spalten durch Leerzeichen getrennt.
    const boost::char_delimiters_separator&lt;char&gt; sep(&quot; &quot;);
    boost::tokenizer&lt;&gt; tokenizer(line, sep);
    boost::tokenizer&lt;&gt;::iterator it = tokenizer.begin();

    for ( it; it != tokenizer.end(); it++ )
    {
        try{
           double val = boost::lexical_cast&lt;double&gt;(*it);
        }
        catch (boost::bad_lexical_cast&amp; e)
        {
           // Kein double, fehler behandeln
        }
    }

}
</code></pre>
<p>Hab das eben ausm Kopf getippt, sollte aber passen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050751</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 17 Apr 2011 18:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 18:59:37 GMT]]></title><description><![CDATA[<p>Ok, danke euch beiden.<br />
Hat wunderbar geklappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050776</guid><dc:creator><![CDATA[Slabic]]></dc:creator><pubDate>Sun, 17 Apr 2011 18:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumbrüche einlesen! Edit String to double on Sun, 17 Apr 2011 21:10:33 GMT]]></title><description><![CDATA[<p>Slabic schrieb:</p>
<blockquote>
<p>Ich habe eine Liste von Dezimalzahlen(mit Komma getrennt)untereinander und möchte alle kommas in Punkte verwandeln.</p>
</blockquote>
<p>Hallo Slabic,</p>
<p>was Du eigentlich möchtest ist doch die doubles aus der Datei einlesen - oder? Ein std::istream (und damit auch ein std::ifstream) bietet eine Schnittstelle an, die Darstellung von Zahlen länderüblich anzupassen. Im deutschen wird das ',' als Dezimaltrenner verwendet, also stellt man den istream auf 'deutsch' um.<br />
Das geht so:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;locale&gt;
#include &lt;iostream&gt;

int main()
{
    using namespace std; 
    ifstream fin(&quot;Datei.txt&quot;);
    fin.imbue( locale(&quot;german&quot;) ); // der String 'german' kann je nach verwendeter IDE variieren!
    // .. ab hier werden Fließkommazahlen mit ',' als Dezimaltrenner gelesen
    for( double d; fin &gt;&gt; d; ) // jetzt die double ganz normal einlesen
        cout &lt;&lt; d &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Btw solltest IMHO du auf eof() prüfen und nicht ob ein failbit gesetzt wurde mit good().</p>
</blockquote>
<p>lies Dir doch mal <a href="http://www.c-plusplus.net/forum/p2042572#2042572" rel="nofollow">diesen Beitrag</a> durch</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050815</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 17 Apr 2011 21:10:33 GMT</pubDate></item></channel></rss>