<?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[Datei einlesen]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>ich bin seit mehreren Tagen an einer Aufgabe dran und komme einfach nicht auf die Lösung.<br />
Ich muss eine txt-Datei einlesen. Diese sieht wie folgt aus:</p>
<pre><code>C2H5               12387C   2H   5          G  0300.00   5000.00  1000.00      1
 7.19048023E+00 6.48407731E-03-6.42806469E-07-2.34787939E-10 3.88087728E-14    2
 1.06745488E+04-1.47808924E+01 2.69070172E+00 8.71913321E-03 4.41983866E-06    3
 9.33870314E-10-3.92777347E-12 1.28704043E+04 1.21381950E+01                   4
C2H6              121686C   2H   6          G  0300.00   4000.00  1000.00      1
 4.82593823E+00 1.38404286E-02-4.55725876E-06 6.72496725E-10-3.59816140E-14    2
-1.27177930E+04-5.23950672E+00 1.46253872E+00 1.54946670E-02 5.78050731E-06    3
-1.25783188E-08 4.58626713E-12-1.12391758E+04 1.44322949E+01
</code></pre>
<p>Sie geht noch weiter, aber dadran ist meine Problem schon zu erkennen.<br />
Ich darf außerdem die Datai nicht verändern.</p>
<p>Ich hab es versucht mit:</p>
<pre><code class="language-cpp">std::string words;
	std::fstream file(&quot;test.txt&quot;);
	while (file.good())
	{
	  file &gt;&gt; words;
	  cout &lt;&lt; words &lt;&lt; endl;
	}
	file.close();
</code></pre>
<p>oder auch mit:</p>
<pre><code class="language-cpp">while (getline(fin, line)) {
        cout &lt;&lt; line &lt;&lt; endl;

        istringstream tokenizer(line);
        string token;

        getline(tokenizer, token, ' ');
        istringstream float_iss(token);
        string f;
        float_iss &gt;&gt; f;
        cout &lt;&lt; f &lt;&lt; endl;
</code></pre>
<p>Beides funktioniert nicht perfekt, da die Zwischenräume zwischen den Werten teilweise ein Minus aufweisen und daher das Programm die Werte nicht richtig einliest. Daher die Frage, wie ich es hinbekommen kann, dass es alle Werte einzeln einlesen kann. Kann mir dabei jemand helfen?</p>
<p>Vielen Dank</p>
<p>Streicher</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296242/datei-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 00:04:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296242.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Nov 2011 15:11:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 15:11:40 GMT]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>ich bin seit mehreren Tagen an einer Aufgabe dran und komme einfach nicht auf die Lösung.<br />
Ich muss eine txt-Datei einlesen. Diese sieht wie folgt aus:</p>
<pre><code>C2H5               12387C   2H   5          G  0300.00   5000.00  1000.00      1
 7.19048023E+00 6.48407731E-03-6.42806469E-07-2.34787939E-10 3.88087728E-14    2
 1.06745488E+04-1.47808924E+01 2.69070172E+00 8.71913321E-03 4.41983866E-06    3
 9.33870314E-10-3.92777347E-12 1.28704043E+04 1.21381950E+01                   4
C2H6              121686C   2H   6          G  0300.00   4000.00  1000.00      1
 4.82593823E+00 1.38404286E-02-4.55725876E-06 6.72496725E-10-3.59816140E-14    2
-1.27177930E+04-5.23950672E+00 1.46253872E+00 1.54946670E-02 5.78050731E-06    3
-1.25783188E-08 4.58626713E-12-1.12391758E+04 1.44322949E+01
</code></pre>
<p>Sie geht noch weiter, aber dadran ist meine Problem schon zu erkennen.<br />
Ich darf außerdem die Datai nicht verändern.</p>
<p>Ich hab es versucht mit:</p>
<pre><code class="language-cpp">std::string words;
	std::fstream file(&quot;test.txt&quot;);
	while (file.good())
	{
	  file &gt;&gt; words;
	  cout &lt;&lt; words &lt;&lt; endl;
	}
	file.close();
</code></pre>
<p>oder auch mit:</p>
<pre><code class="language-cpp">while (getline(fin, line)) {
        cout &lt;&lt; line &lt;&lt; endl;

        istringstream tokenizer(line);
        string token;

        getline(tokenizer, token, ' ');
        istringstream float_iss(token);
        string f;
        float_iss &gt;&gt; f;
        cout &lt;&lt; f &lt;&lt; endl;
</code></pre>
<p>Beides funktioniert nicht perfekt, da die Zwischenräume zwischen den Werten teilweise ein Minus aufweisen und daher das Programm die Werte nicht richtig einliest. Daher die Frage, wie ich es hinbekommen kann, dass es alle Werte einzeln einlesen kann. Kann mir dabei jemand helfen?</p>
<p>Vielen Dank</p>
<p>Streicher</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151092</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Wed, 30 Nov 2011 15:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 15:14:19 GMT]]></title><description><![CDATA[<p>Willst du die Datei als Text haben oder willst du mit den Werten auch rechnen? Denn du liest ja immer nur Text ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151094</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 30 Nov 2011 15:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 15:21:34 GMT]]></title><description><![CDATA[<p>Ich muss damit später auch noch rechnen, aber dachte, dass ich sie zuerst als string einlese und später dann umforme. Aber wenn man das natürlich direkt am Anfang macht ist es praktischer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151100</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Wed, 30 Nov 2011 15:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 15:29:39 GMT]]></title><description><![CDATA[<p>Der std::istream operator &gt;&gt; ist für fast alles überladen, strings, double, float, int, ...</p>
<pre><code class="language-cpp">int main()
{
  double d;
  std::cin &gt;&gt; d;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2151105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151105</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 30 Nov 2011 15:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 17:39:51 GMT]]></title><description><![CDATA[<p>Die Textdatei hat zeilenweise unterschiedliche Inhalte. Da muss man schon zunächst alles als unstrukturierten Text lesen und dann nach dem vorgefundenen Inhalt auswerten.</p>
<p>Vorschlag in C:</p>
<pre><code class="language-cpp">char       zeile[96];
ifstream   input;
int        size;

size = sizeof(zeile);
input.open(&quot;file.txt&quot;,ios::in); 

while(!input.eof())
{
   input.getline(zeile,size);
   // hier zeile zur Weiterverarbeitung auswerten
}
input.close();
</code></pre>
<p>Die Überladungen von &gt;&gt; kann man erst einsetzen, wenn man weiss was in einer Zeile drinsteht!</p>
<p>edit: input.open(...) gehört da natürlich auch noch rein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151152</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Wed, 30 Nov 2011 17:39:51 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 17:26:43 GMT]]></title><description><![CDATA[<p>.good() ist schon angenehmer als .eof().<br />
Und man weiß doch was in den Zeilen steht? string, string, string, unsigned, char, double, double, double, unsigned, [..], wieder von Vorne.<br />
Zumindest der gezeigte Ausschnitt hat ein klares Schema.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151174</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 30 Nov 2011 17:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 17:28:43 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>.good() ist schon angenehmer als .eof().</p>
</blockquote>
<p>Es ist aber immer noch logisch falsch. Man weiß nicht, ob die Zeile die zur Weiterverarbeitung gegeben wird, überhaupt gültig war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151175</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 30 Nov 2011 17:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 17:30:53 GMT]]></title><description><![CDATA[<p>Was bedeutet C2H5 und die anderen Zeichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151178</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Wed, 30 Nov 2011 17:30:53 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 17:35:56 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>.good() ist schon angenehmer als .eof().</p>
</blockquote>
<p>Es ist aber immer noch logisch falsch. Man weiß nicht, ob die Zeile die zur Weiterverarbeitung gegeben wird, überhaupt gültig war.</p>
</blockquote>
<p>Jo, ich bin irgendwie von operator &gt;&gt; ausgegangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151180</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 30 Nov 2011 17:35:56 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 17:50:50 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Was bedeutet C2H5 und die anderen Zeichen?</p>
</blockquote>
<p>Spielt keine Rolle beim Lesen der Datei. Erst bei der Auswertung jeder eingelesenen Zeile in die Logik der Weiterverabeitung ist das von Interesse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151181</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Wed, 30 Nov 2011 17:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 18:14:46 GMT]]></title><description><![CDATA[<p>Kann es beim Lesen vorkommen, dass das EOF-Bit gesetzt ist, aber das Fail-Bit nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151184</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Nov 2011 18:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 18:45:57 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Was bedeutet C2H5 und die anderen Zeichen?</p>
</blockquote>
<p>C2H5 ist ein Ethylrest und C2H6 ist Ethan. Es handelt sich bei der Datei generell um viele chemische Elemente. Aber die spielen keine große Rolle.</p>
<p>Danke an berniebutt. Ich werde es mal versuchen und werde mich dann wieder melden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151201</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Wed, 30 Nov 2011 18:45:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 18:58:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;fstream&gt;

int main() {
	std::ifstream lese_datei(&quot;datei.txt&quot;);
	if(!lese_datei.is_open()) {
		std::cout &lt;&lt; &quot;Fehler, erkenne die Datei nicht!&quot;;
		_getch();
		exit(0);
	}

	char c;
	while(lese_datei.get(c)) {
		std::cout &lt;&lt; c;
	}
	lese_datei.close();

	_getch();
	return 0;
}
</code></pre>
<p>Ist das die Lösung, die du suchst? Wenn du die einzelnen Wörter/Zahlen in einem String speichern willst, dann kannst du sie doch in der while-loop mit einer if-Anweisung lenken und einzelnd abfragen und speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151205</guid><dc:creator><![CDATA[KPKK]]></dc:creator><pubDate>Wed, 30 Nov 2011 18:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 19:12:37 GMT]]></title><description><![CDATA[<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Kann es beim Lesen vorkommen, dass das EOF-Bit gesetzt ist, aber das Fail-Bit nicht?</p>
</blockquote>
<p>Für alle, die es interessiert: <a href="http://stdcxx.apache.org/doc/stdlibug/29-1.html" rel="nofollow">http://stdcxx.apache.org/doc/stdlibug/29-1.html</a></p>
<blockquote>
<p>The flag eofbit is set when there is an attempt to read past the end of an input sequence. This occurs in the following two typical examples:</p>
<p>1. Assume the extraction happens character-wise. Once the last character is read, the stream is still in good state; eofbit is not yet set. Any subsequent extraction, however, is considered an attempt to read past the end of the input sequence. Thus, eofbit is set. (Later, we'll see that failbit is set as well.)</p>
<p>2. If you do not read character-wise, but extract an integer or a string, for example, you always read past the end of the input sequence. This is because the input operators read characters until they find a separator, or hit the end of the input sequence. Consequently, if the input contains the sequence ... 912749&lt;eof&gt; and an integer is extracted, the eofbit flag (but not failbit) is set.</p>
</blockquote>
<blockquote>
<p>Let's see whether failbit would be set in the previous examples:</p>
<p>1. After reading the last available character, the extraction not only reads past the end of the input sequence; it also fails to extract the requested character. Hence, failbit is set in addition to eofbit.</p>
<p>2. In this case, the result is different. Although the end of the input sequence is reached by extracting the integer, the input operation does not fail and the desired integer is indeed read. In this situation only the eofbit is set.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2151210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151210</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Nov 2011 19:12:37 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 19:58:58 GMT]]></title><description><![CDATA[<p>Streicher schrieb:</p>
<blockquote>
<p>... dachte, dass ich sie zuerst als string einlese und später dann umforme.</p>
</blockquote>
<p>das denken alle, die nicht wissen, wie Einlesen funktioniert. Das ist aber ein Holzweg.</p>
<p>Streicher schrieb:</p>
<blockquote>
<p>.. da die Zwischenräume zwischen den Werten teilweise ein Minus aufweisen und daher das Programm die Werte nicht richtig einliest. Daher die Frage, wie ich es hinbekommen kann, dass es alle Werte einzeln einlesen kann.</p>
</blockquote>
<p>Genau wie es cooky451 schon gesagt hat. Lese einfach die double-Werte aus der Datei. das '-'-Zeichen direkt hinter der Zahl stört da nicht, weil es eindeutig nicht mehr zur vorhergehenden Zahl gehört.</p>
<p>Streicher schrieb:</p>
<blockquote>
<pre><code>C2H5               12387C   2H   5          G  0300.00   5000.00  1000.00      1
 7.19048023E+00 6.48407731E-03-6.42806469E-07-2.34787939E-10 3.88087728E-14    2
 1.06745488E+04-1.47808924E+01 2.69070172E+00 8.71913321E-03 4.41983866E-06    3
 9.33870314E-10-3.92777347E-12 1.28704043E+04 1.21381950E+01                   4
C2H6              121686C   2H   6          G  0300.00   4000.00  1000.00      1
 4.82593823E+00 1.38404286E-02-4.55725876E-06 6.72496725E-10-3.59816140E-14    2
-1.27177930E+04-5.23950672E+00 1.46253872E+00 1.54946670E-02 5.78050731E-06    3
-1.25783188E-08 4.58626713E-12-1.12391758E+04 1.44322949E+01
</code></pre>
</blockquote>
<p>Die Daten in der Datei wiederholen sich anscheinend alle 4 Zeilen. ich unterstelle mal, dass diese 4 Zeilen zu einem wie auch immer gearteten Eintrag zusammen gehören. Da ich nicht weiß, was das ist, nenne ich den mal 'Streicher'. Jetzt bleibt die Frage - was brauchst Du davon. Nur hast nur unscharf darauf geantwortet - ich unterstelle hier, dass Du die 14 Fließkommawerte benötigst, die in einem Eintrag stehen. Die Ziffer 1 bis 4, die am Zeilenende stehen, überlese ich mal und die Kopfzeile auch. Bleiben die 14 Werte - ohne sich auf die Anzahl festzulegen ..</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
struct Streicher
{
    std::vector&lt; double &gt; m_data;
};
</code></pre>
<p>Damit man diese Struktur einlesen kann, füge ich einen Streaming-Operator hinzu:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
struct Streicher
{
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Streicher&amp; s );
    std::vector&lt; double &gt; m_data;
};
</code></pre>
<p>Dieser Streaming-Operator befähigt einen, so einen Streicher-Eintrag direkt aus einer Datei zu lesen. Also in der Form:</p>
<pre><code class="language-cpp">Streicher s;
    ifstream file( &quot;input.txt&quot; );
    file &gt;&gt; s; // Lese einen Streicher-Eintrag aus file
</code></pre>
<p>Den muss man jetzt natürlich implementieren:</p>
<pre><code class="language-cpp">std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Streicher&amp; s )
{
    s.m_data.clear(); // erst mal löschen, falls noch was drin stand
    in &gt;&gt; skipline; // Zeile 1 überlesen
    for( int zl=2; zl&lt;=4; ++zl ) // Zeilen 2 bis 4
    {
        double d;
        for( int i=0; i&lt;(zl==4? 4: 5) &amp;&amp; in &gt;&gt; d; ++i ) // in Zeile 2 und 3 fünf und in Zeile 4 drei Werte lesen
            s.m_data.push_back( d );
        in &gt;&gt; skipline; // den Rest der Zeile überlesen (die Ziffern 2,3,4)
    }
    return in;
}
</code></pre>
<p>das '<a href="http://www.c-plusplus.net/forum/p2029437#2029437" rel="nofollow">skipline</a>' gibt es so nicht in C++, so muss man das auch noch schreiben.</p>
<pre><code class="language-cpp">std::istream&amp; skipline( std::istream&amp; in )
{
    return in.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), '\n' ); // erfordert #include &lt;limits&gt;
}
</code></pre>
<p>Das war's eigentlig schon, In der Anwendung und alles zusammen sieht es dann so aus:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;limits&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

struct Streicher
{
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Streicher&amp; s );
    std::vector&lt; double &gt; m_data;
};

std::istream&amp; skipline( std::istream&amp; in )
{
    return in.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), '\n' ); // erfordert #include &lt;limits&gt;
}

std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Streicher&amp; s )
{
    s.m_data.clear(); // erst mal löschen, falls noch was drin stand
    in &gt;&gt; skipline; // Zeile 1 überlesen
    for( int zl=2; zl&lt;=4; ++zl ) // Zeilen 2 bis 4
    {
        double d;
        for( int i=0; i&lt;(zl==4? 4: 5) &amp;&amp; in &gt;&gt; d; ++i ) // in Zeile 2 und 3 fünf und in Zeile 4 drei Werte lesen
            s.m_data.push_back( d );
        in &gt;&gt; skipline; // den Rest der Zeile überlesen (Ziffern 2,3,4)
    }
    return in;
}

int main()
{
    using namespace std;
    ifstream file(&quot;input.txt&quot;);
    if( !file.is_open() )
    {
        cerr &lt;&lt; &quot;Datei kann nicht geoeffnet werden&quot; &lt;&lt; endl;
        return -1;
    }
    for( Streicher s; file &gt;&gt; s; )
    {
        // mache was mit 's'
        cout &lt;&lt; s.m_data[0] &lt;&lt; &quot; ... &quot; &lt;&lt; s.m_data[13] &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
<p>Enthält die Datei 'input.txt' den oben beschriebenen Inhalt, so erhält man als Ausgabe:</p>
<pre><code>7.19048 ... 12.1382
4.82594 ... 14.4323
</code></pre>
<p>Falls Du aus der 1.Zeile des Eintrags noch weitere Werte benötigst, so melde Dich noch mal.<br />
:xmas2: Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151219</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 30 Nov 2011 19:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 20:48:13 GMT]]></title><description><![CDATA[<p>Also das Programm funktioniert soweit perfekt. Vielen Dank schon mal werner! Jetzt hab ich nur noch ein kleines Problem die Datei fängt nicht direkt mit der Liste an, sondern mit:</p>
<pre><code>THERMO    
   300.000  1000.000  5000.000                                                  
AR                120186AR  1               G  0300.00   5000.00  1000.00      1
 2.50000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
-7.45375000E+02 4.36600065E+00 2.50000000E+00 0.00000000E+00 0.00000000E+00    3
 0.00000000E+00 0.00000000E+00-7.45375000E+02 4.36600065E+00                   4
</code></pre>
<p>Sprich die ersten beiden Zeilen sind noch zusätzlich vorhanden. Die Frage ist, ob man die 2 Zeilen auch einfach überspringen kann? Wenn ja wie genau?</p>
<p>Schon mal &quot;Danke&quot; im voraus. Auf jedenfall kann man jetzt weiterprogrammieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151241</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Wed, 30 Nov 2011 20:48:13 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 22:00:15 GMT]]></title><description><![CDATA[<p>Streicher schrieb:</p>
<blockquote>
<p>Die Frage ist, ob man die 2 Zeilen auch einfach überspringen kann? Wenn ja wie genau?</p>
</blockquote>
<p>Da musst du doch nur um</p>
<pre><code class="language-cpp">in &gt;&gt; skipline; // Zeile 1 überlesen
</code></pre>
<p>eine for-Schleife machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151262</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Nov 2011 22:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 22:28:29 GMT]]></title><description><![CDATA[<p>Streicher schrieb:</p>
<blockquote>
<p>Also das Programm funktioniert soweit perfekt. Vielen Dank schon mal werner! Jetzt hab ich nur noch ein kleines Problem die Datei fängt nicht direkt mit der Liste an, sondern mit:</p>
<pre><code>THERMO    
   300.000  1000.000  5000.000                                                  
AR                120186AR  1               G  0300.00   5000.00  1000.00      1
 2.50000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
-7.45375000E+02 4.36600065E+00 2.50000000E+00 0.00000000E+00 0.00000000E+00    3
 0.00000000E+00 0.00000000E+00-7.45375000E+02 4.36600065E+00                   4
</code></pre>
<p>Sprich die ersten beiden Zeilen sind noch zusätzlich vorhanden. Die Frage ist, ob man die 2 Zeilen auch einfach überspringen kann? Wenn ja wie genau?</p>
</blockquote>
<p>Füge in meinem Code vor der Zeile 40 (also unmittelbar vor der for-Schleife) folgende Zeile ein:</p>
<pre><code class="language-cpp">file &gt;&gt; skipline &gt;&gt; skipline; // ersten 2 Zeilen überlesen
</code></pre>
<p>:xmas2: Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151277</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 30 Nov 2011 22:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 30 Nov 2011 22:53:48 GMT]]></title><description><![CDATA[<p>Danke, hat geklappt. Damit wäre jetzt die Tabelle eingelesen. <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="🙂"
    /><br />
Wenn ich noch Fragen habe melde ich mich, aber erstmal müsste es ausreichen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2151293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151293</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Wed, 30 Nov 2011 22:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 18:45:18 GMT]]></title><description><![CDATA[<p>Ich bin's nochmal:<br />
Das Programm läuft soweit, aber ich kann damit noch nicht wirklich arbeiten. Denn ich bräuchte ein Feld welches alle eingelesenen Werte beinhaltet. Ich hab es mit mehreren Varianten von Feldern versucht, aber es klappt leider nie. Da es gleichzeitig mit den Feldern hochzählen muss, aber die vorhandene for-Schleife nach 14 Feldern wieder von vorne anfängt.</p>
<p>Hat jemand dazu eine Idee wie man alle eingelesenen Werte abspeichern kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152048</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Fri, 02 Dec 2011 18:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 19:32:13 GMT]]></title><description><![CDATA[<p>Hast du noch eben deinen aktuellen Quellcodestand?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152053</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 02 Dec 2011 19:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 19:36:53 GMT]]></title><description><![CDATA[<p>Das ist er:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;limits&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

struct Streicher
{
    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Streicher&amp; s );
    std::vector&lt; double &gt; m_data;
};

std::istream&amp; skipline( std::istream&amp; in )
{
    return in.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), '\n' ); // erfordert #include &lt;limits&gt;
}

std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Streicher&amp; s )
{
    s.m_data.clear(); // erst mal löschen, falls noch was drin stand
    in &gt;&gt; skipline; // Zeile 1 überlesen
    for( int zl=2; zl&lt;=4; ++zl ) // Zeilen 2 bis 4
    {
        double d;
        for( int i=0; i&lt;(zl==4? 4: 5) &amp;&amp; in &gt;&gt; d; ++i ) // in Zeile 2 und 3 fünf und in Zeile 4 drei Werte lesen
            s.m_data.push_back( d );
        in &gt;&gt; skipline; // den Rest der Zeile überlesen (Ziffern 2,3,4)
    }
    return in;
}

int main()
{
    using namespace std;
    ifstream file(&quot;input.txt&quot;);

    if( !file.is_open() )
    {
        cerr &lt;&lt; &quot;Datei kann nicht geoeffnet werden&quot; &lt;&lt; endl;
        return -1;
    }
    file &gt;&gt; skipline &gt;&gt; skipline; //Überspringen der ersten beiden Zeile
    for( Streicher s; file &gt;&gt; s; )
    {
        // mache was mit 's'
        cout &lt;&lt; s.m_data[0] &lt;&lt; &quot; ... &quot; &lt;&lt; s.m_data[13] &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2152055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152055</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Fri, 02 Dec 2011 19:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 20:26:48 GMT]]></title><description><![CDATA[<p>Wieso speicherst du nicht das 's' ab?</p>
<pre><code class="language-cpp">vector&lt;Streicher&gt; vec;
for( Streicher s; file &gt;&gt; s; ) vec.push_back(s);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2152069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152069</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 02 Dec 2011 20:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 21:30:06 GMT]]></title><description><![CDATA[<p>Weil ich den Befehl nicht gekannt habe. Wie soll ich das in das Programm einbinden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152094</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Fri, 02 Dec 2011 21:30:06 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 21:50:48 GMT]]></title><description><![CDATA[<p>Streicher schrieb:</p>
<blockquote>
<p>Weil ich den Befehl nicht gekannt habe. Wie soll ich das in das Programm einbinden?</p>
</blockquote>
<p>.. mh - bei Dir fehlen noch ziemlich viele Grundlage. Also Du änderst das main()-Programm so:</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;
    vector&lt;Streicher&gt; alleStreicherElemente;

    ifstream file(&quot;input.txt&quot;);
    if( !file.is_open() )
    {
        cerr &lt;&lt; &quot;Datei kann nicht geoeffnet werden&quot; &lt;&lt; endl;
        return -1;
    }
    file &gt;&gt; skipline &gt;&gt; skipline; //Überspringen der ersten beiden Zeile
    for( Streicher s; file &gt;&gt; s; )
    {
        alleStreicherElemente.push_back( s ); // hier das gerade gelesene Element des Typs Streicher im Container aufnehmen
    }
    cout &lt;&lt; alleStreicherElemente &lt;&lt; &quot; Elemente gespeichert&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Was willst Du denn dann mit den Daten machen und sind dass auch die Daten, die Du benötigst? Vielleicht verrätst Du uns was das Programm wirklich konkret tun soll, dann kann man auch besser helfen.</p>
<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Hast du noch eben deinen aktuellen Quellcodestand?</p>
</blockquote>
<p>Streicher schrieb:</p>
<blockquote>
<p>Das ist er:</p>
<pre><code class="language-cpp">...
</code></pre>
</blockquote>
<p>das ist der Quellcode, den ich gepostet habe, interessanter wäre der Teil, bei dem Du mit den Daten arbeitest. Nur davon ist es letztlich abhängig, wie z.B. die <code>struct Streicher</code> genau aussehen muss.</p>
<p>:xmas2: Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152102</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 02 Dec 2011 21:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Fri, 02 Dec 2011 22:09:00 GMT]]></title><description><![CDATA[<p>Also ich muss aus der Datei die Zahlen der einzelnen Elemente einlesen. Soweit funktioniert ja auch schon das Programm. Ich muss aber später mit diesen Zahlen Rechnungen durchführen. Die Rechnung lautet z.B. R = a1 + a2 * T<br />
Dabei ist T bekannt und a1 und a2 sind Werte die ich zuweisen muss und die in der Tabelle stehen.<br />
Daher hab ich mir gedacht, dass ich sie alle in Felder reinschreibe, so dass ich sie dann einfach durch Feld[i] aufrufen kann und dann damit rechnen kann.</p>
<p>Ich hoffe es ist klarer geworden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152108</guid><dc:creator><![CDATA[Streicher]]></dc:creator><pubDate>Fri, 02 Dec 2011 22:09:00 GMT</pubDate></item></channel></rss>