<?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[Funktion zum Einlesen aus Textdateien]]></title><description><![CDATA[<p>Guten Tag</p>
<p>Ich habe folgendes Problem. Ich habe eine Textdatei in der ca. 35000 Zahlen stehen. Kommawerte sind mit einem . getrennt und die einzelnen Zahlen durch Leerzeichen bzw. Zeilenumbrüche. Gibt es eine vordefinierte Stadardfunktion mit der ich diese Werte einlesen kann? Ich habe mir selber versucht etwas zusammen zu basteln. Dies ist aber sehr langsam und nicht wirklch effizient. Für Hilfe wäre ich sehr dankbar.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227622/funktion-zum-einlesen-aus-textdateien</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 19:22:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227622.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Nov 2008 21:13:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion zum Einlesen aus Textdateien on Mon, 17 Nov 2008 21:13:34 GMT]]></title><description><![CDATA[<p>Guten Tag</p>
<p>Ich habe folgendes Problem. Ich habe eine Textdatei in der ca. 35000 Zahlen stehen. Kommawerte sind mit einem . getrennt und die einzelnen Zahlen durch Leerzeichen bzw. Zeilenumbrüche. Gibt es eine vordefinierte Stadardfunktion mit der ich diese Werte einlesen kann? Ich habe mir selber versucht etwas zusammen zu basteln. Dies ist aber sehr langsam und nicht wirklch effizient. Für Hilfe wäre ich sehr dankbar.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616189</guid><dc:creator><![CDATA[svensen]]></dc:creator><pubDate>Mon, 17 Nov 2008 21:13:34 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum Einlesen aus Textdateien on Mon, 17 Nov 2008 21:25:07 GMT]]></title><description><![CDATA[<p>ein paar mehr infos wären gut</p>
<p>man kann zahlen eig wie in der normalen benutzereingabe per cin auch von dateien einlesen</p>
<pre><code class="language-cpp">fstream f(&quot;deineDatei.lol&quot;);

int val;

while ( !f.eof() )
{
   f &gt;&gt; val;
   cout &lt;&lt; val &lt;&lt; endl;
}
</code></pre>
<p>aber es gibt auch komplexere funktionen wie getline und sowas...</p>
<p>wie gesagt infos wären gut<br />
und dein ansatz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616191</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 17 Nov 2008 21:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum Einlesen aus Textdateien on Thu, 20 Nov 2008 08:39:11 GMT]]></title><description><![CDATA[<p>sry. War die Tage unterwegs und kam nicht an meinen Quellcode. Hier also mein Ansatz</p>
<pre><code class="language-cpp">string zeile;							//zum Speichern der einzelnen eingelesenen Zeilen
	const int ASCIIverschiebung = 48;		//Um die Verschiebung bei der Ascii Tabelle auszugleichen
	const int Leerzeichen = -16;
	const int Komma = -2;
	const int Minus = -3;
	const int KlammerAuf = 43;
	const int KlammerZu = 45;

ifstream scalesstream(&quot;scales.txt&quot;);
	suchwort = &quot;scales&quot;;
	vector &lt;double&gt; eingelesen;  

	while(getline(scalesstream,zeile))				//zeilenweise einlesen
	{	
		found = zeile.find(suchwort);
		if (found!=string::npos) 
		{
		double wert;						//Zum Speichern des kompletten Zellenwertes für die Matrix
		double zwischenwert;				//zum Speichern von zwischendurch eingelesenen Werten
		int laenge = zeile.length();
		bool vorzeichen;
		for (int i=found+suchwort.length(); i&lt;zeile.length();i++)				// die ganze Zeile ablaufen
				{	
					wert = zeile [i]-ASCIIverschiebung;
					if (wert != Leerzeichen)						//prüfen ob eine Zahl oder ein Leerzeichen 
					{										//wenn kein Leerzeichen
						if (wert == Minus)					//überprüfen ob negativew Gewichte vorkommen
							{
								vorzeichen = true;			//Vorzeichen auf true = minus setzen
								wert=0;
							}
						else vorzeichen = false;
						int m=i+1;							//m ist dazu da um an die richtige stelle zurückzuspringen, wenn die einzulesende Zahl mehrere Stellen hat
						while (((zwischenwert = zeile[m]-ASCIIverschiebung) !=Leerzeichen) &amp;&amp; (m&lt;laenge) )		//prüfen wieviele Stellen die gefundene Zahl hat
						{																//dabei nicht über das Stringende hinauslaufen

							if (zwischenwert == Komma)					//prüfen ob ein Komma (Punkt) gesetzt ist
							{	
								m++;
								double stellenwert = 10;			
								while ((zwischenwert = zeile[m]-ASCIIverschiebung) != Leerzeichen &amp;&amp; (m&lt;laenge))   //prüfen wieviele Stellen die gefundene Zahl hat
								{														//dabei nicht über das Stringende hinauslaufen
									wert=wert+(zwischenwert/stellenwert);		//Aufaddieren der Werte
									stellenwert = stellenwert*10;				//Stellenwert eins weitersetzen
									m++;										//m erhöhen um auf nächste Stelle zugreifen zu können
								}
							}
							else
							{
								wert=wert*10+(zeile[m]-ASCIIverschiebung);		//Aufaddieren der Stellenwerte 
								m++;
							}
						}						
						i=m;								//Setzen der nächsten einzulesen Stelle auf den Wert hinter die letze gefundene Zahl 

						if (vorzeichen)								//falls negativ
						{
							wert=wert*-1;
						}
						eingelesen.push_back(wert);

					}
				}
		 }
	}
</code></pre>
<p>in den textdateien steht irgendwo das wort &quot;scales&quot;. das wird gefunden und dann werden die nachfolgenden Werte eingelesen. Die Werte sind sind Dezimalzahlen, wobei das Komma als . dargestellt wird. Jetzt interessiert mich ob das ganze auch geschickter geht. Vor allem würde ich gerne nur bis zu einem bestimmten Signalwort einlesen. Finde meine Version sehr übers Knie gebrochen und suche nach etwas eleganterem.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617517</guid><dc:creator><![CDATA[svensen]]></dc:creator><pubDate>Thu, 20 Nov 2008 08:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum Einlesen aus Textdateien on Thu, 20 Nov 2008 09:09:40 GMT]]></title><description><![CDATA[<p>Also ich würde das mal Wort für Wort einlesen (sofern alles per Abstand getrennt ist).<br />
Dann kannst du ganz einfach mit std::find das erste Vorkommen suchen. Und Anfangen die nächsten Elemente in die gewünschte Form zu extrahieren. (am besten über std::stringstream). Aber vorher noch überprüfen, ob das gewünschte Signalwort vorkommt.</p>
<p>in etwa so: (ungetestet)</p>
<pre><code class="language-cpp">std::ifstream in (&quot;input.txt&quot;);

typedef std::vector&lt;std::string&gt; WordType;

WordTypewords;

std::string temp;
while ( in &gt;&gt; temp )
  words.push_back (temp);

WordType::iterator it = std::find (words.begin(),words.end(),&quot;scales&quot;);

std::list&lt;float&gt; values;

while ( *it != &quot;Signalwort&quot;)
{
  std::stringstream s;
  s &lt;&lt; *it;
  float f;
  s &gt;&gt; f;
  values.push_back ( f );
  ++it;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1617540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617540</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 20 Nov 2008 09:09:40 GMT</pubDate></item></channel></rss>