<?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[Inhalte aus .txt Files Filtern und ausgeben]]></title><description><![CDATA[<p>Hallo</p>
<p>als Anfänger in C++ stehe ich im Dunkeln</p>
<p>hab die spannende Aufgabe aus .txt Files für mich wesentlichen Inhalt raus zu filtern.</p>
<p>Mein Ziel ist ein Ordner / Verzeichnis in dem sich diverse File.txt befinden nach Textinhalt zu durchsuchen und dann in eine Liste.txt ein zu fügen.</p>
<p>Mein Ansatz:</p>
<p>File um File im Verzeichnis zu öffnen und zeilenweise überprüfen des Inhaltes.<br />
Jedoch möchte ich jeweils nur den Teil der Zeile vom Suchkriterium bis zum nächsten Lehrschlag in meine Liste kopieren.</p>
<p>Bsp:</p>
<p>Suchkriterium: Wert_=</p>
<p>Text</p>
<p>Dies ist der Wert_=1325 Beispiel Text</p>
<p>In der Lösungsmenge müsste nun Wert_=1325 stehen.</p>
<p>Das Öffnen / Einlesen und das Speichern ist mir bekannt.</p>
<p>#include &quot;stdafx.h&quot;<br />
#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;fstream&gt;</p>
<p>using namespace std;</p>
<p>void main ()<br />
{<br />
// Schleife für Verzeichnis??</p>
<p>string suche;<br />
ifstream infile(&quot;C:\\Verzeichnis\\Test.txt&quot;);<br />
ofstream outfile;<br />
outfile.open(&quot;C:\\Resultate\\Liste.txt&quot;);</p>
<p>while ( std::getline(infile,suche) )<br />
{<br />
// Schleife für Filter??<br />
{<br />
cout &lt;&lt; suche &lt;&lt; endl;<br />
outfile &lt;&lt; suche &lt;&lt; &quot;;&quot; &lt;&lt; endl;<br />
}<br />
//</p>
<p>}<br />
//<br />
outfile.close();<br />
}</p>
<p>Bei den Schleifen für Verzeichnis und Filter stehe ich an.</p>
<p>Für klärende Beiträge bin ich sehr dankbar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277371/inhalte-aus-txt-files-filtern-und-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 21:55:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277371.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Nov 2010 16:18:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Wed, 17 Nov 2010 16:18:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>als Anfänger in C++ stehe ich im Dunkeln</p>
<p>hab die spannende Aufgabe aus .txt Files für mich wesentlichen Inhalt raus zu filtern.</p>
<p>Mein Ziel ist ein Ordner / Verzeichnis in dem sich diverse File.txt befinden nach Textinhalt zu durchsuchen und dann in eine Liste.txt ein zu fügen.</p>
<p>Mein Ansatz:</p>
<p>File um File im Verzeichnis zu öffnen und zeilenweise überprüfen des Inhaltes.<br />
Jedoch möchte ich jeweils nur den Teil der Zeile vom Suchkriterium bis zum nächsten Lehrschlag in meine Liste kopieren.</p>
<p>Bsp:</p>
<p>Suchkriterium: Wert_=</p>
<p>Text</p>
<p>Dies ist der Wert_=1325 Beispiel Text</p>
<p>In der Lösungsmenge müsste nun Wert_=1325 stehen.</p>
<p>Das Öffnen / Einlesen und das Speichern ist mir bekannt.</p>
<p>#include &quot;stdafx.h&quot;<br />
#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;fstream&gt;</p>
<p>using namespace std;</p>
<p>void main ()<br />
{<br />
// Schleife für Verzeichnis??</p>
<p>string suche;<br />
ifstream infile(&quot;C:\\Verzeichnis\\Test.txt&quot;);<br />
ofstream outfile;<br />
outfile.open(&quot;C:\\Resultate\\Liste.txt&quot;);</p>
<p>while ( std::getline(infile,suche) )<br />
{<br />
// Schleife für Filter??<br />
{<br />
cout &lt;&lt; suche &lt;&lt; endl;<br />
outfile &lt;&lt; suche &lt;&lt; &quot;;&quot; &lt;&lt; endl;<br />
}<br />
//</p>
<p>}<br />
//<br />
outfile.close();<br />
}</p>
<p>Bei den Schleifen für Verzeichnis und Filter stehe ich an.</p>
<p>Für klärende Beiträge bin ich sehr dankbar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981810</guid><dc:creator><![CDATA[Keller Amsteg]]></dc:creator><pubDate>Wed, 17 Nov 2010 16:18:41 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Wed, 17 Nov 2010 16:45:30 GMT]]></title><description><![CDATA[<p>Du muss dein Inputfile natürlich auch öffnen... Und auch wieder schließen.</p>
<p><a href="http://www.cplusplus.com/reference/iostream/istream/" rel="nofollow">http://www.cplusplus.com/reference/iostream/istream/</a><br />
<a href="http://www.cplusplus.com/reference/iostream/ostream/" rel="nofollow">http://www.cplusplus.com/reference/iostream/ostream/</a></p>
<p>Oder für in und out:<br />
<a href="http://www.cplusplus.com/reference/iostream/fstream/" rel="nofollow">http://www.cplusplus.com/reference/iostream/fstream/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981822</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 17 Nov 2010 16:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Wed, 17 Nov 2010 16:46:08 GMT]]></title><description><![CDATA[<p>Es gibt in diesem Forum die Möglichkeit Code mit C/C++ Tags auch ansprechend darzustellen:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

using namespace std;

void main ()
{
// Schleife für Verzeichnis??

string suche;
ifstream infile(&quot;C:\\Verzeichnis\\Test.txt&quot;);
ofstream outfile;
outfile.open(&quot;C:\\Resultate\\Liste.txt&quot;);

while ( std::getline(infile,suche) )
{
// Schleife für Filter??
{
cout &lt;&lt; suche &lt;&lt; endl;
outfile &lt;&lt; suche &lt;&lt; &quot;;&quot; &lt;&lt; endl;
}
//

}
//
outfile.close();
}
</code></pre>
<p><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/1981823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981823</guid><dc:creator><![CDATA[halo]]></dc:creator><pubDate>Wed, 17 Nov 2010 16:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Wed, 17 Nov 2010 16:49:43 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981827</guid><dc:creator><![CDATA[Keller Amsteg]]></dc:creator><pubDate>Wed, 17 Nov 2010 16:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Wed, 17 Nov 2010 17:05:48 GMT]]></title><description><![CDATA[<p>Gut dann halt auch noch was zum Thema:<br />
std::string hat eine find-Funktion mit der man durchsuchen kann.<br />
Vielleicht hilft dir das weiter : <a href="http://www.cplusplus.com/reference/string/string/find/" rel="nofollow">http://www.cplusplus.com/reference/string/string/find/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981836</guid><dc:creator><![CDATA[halo]]></dc:creator><pubDate>Wed, 17 Nov 2010 17:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Thu, 18 Nov 2010 15:18:41 GMT]]></title><description><![CDATA[<p>halo schrieb:</p>
<blockquote>
<p>Gut dann halt auch noch was zum Thema:<br />
std::string hat eine find-Funktion mit der man durchsuchen kann.<br />
Vielleicht hilft dir das weiter : <a href="http://www.cplusplus.com/reference/string/string/find/" rel="nofollow">http://www.cplusplus.com/reference/string/string/find/</a></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <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>
<p>Bin jetzt soweit, dass ich aus einem File die dem Suchkriterium entsprechenden Zeilen separieren und ausgeben kann.</p>
<p>Jetzt müsste ich noch aus allen Files eines Verzeichnisses filtern können. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982346</guid><dc:creator><![CDATA[Keller Amsteg]]></dc:creator><pubDate>Thu, 18 Nov 2010 15:18:41 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Thu, 18 Nov 2010 15:28:05 GMT]]></title><description><![CDATA[<p>So oder so ähnlich für Windows (Unicode):</p>
<pre><code class="language-cpp">void OrdnerDurchsuchen (const wstring&amp; ordner, bool subfolder = true)
{
	wstring suchordner = ordner + L&quot;\\*.*&quot;;

	WIN32_FIND_DATA FData;

	HANDLE hSearch = FindFirstFile(suchordner.c_str(),&amp;FData); 
	BOOL MoreFiles = FALSE; 

	if (hSearch == INVALID_HANDLE_VALUE) return;

	do
	{
		// Ist das ein Ordner ? 
		if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) 
		{
			if(static_cast&lt;wstring&gt;(FData.cFileName) != L&quot;.&quot; &amp;&amp; static_cast&lt;wstring&gt;(FData.cFileName) != L&quot;..&quot;)
			{
				wstring unterordner = ordner + L&quot;\\\\&quot; + static_cast&lt;wstring&gt;(FData.cFileName);
                if(subfolder == true)
				    FindData(unterordner); //REKURSION findet hier statt, Unterordner werden auch durchsucht
			}
		}
		else
		{
			wstring datei = ordner + L&quot;\\\\&quot; + static_cast&lt;wstring&gt;(FData.cFileName);

		}
		MoreFiles = FindNextFile(hSearch,&amp;FData); 
	} while (MoreFiles); 

	FindClose(hSearch);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1982351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982351</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 18 Nov 2010 15:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Thu, 18 Nov 2010 18:29:13 GMT]]></title><description><![CDATA[<p>Hier noch einmal der Code von HighLigerBiMBam, nur halt in schönem C++, was Knappheit, Portabilität und Eleganz mit einschliesst:</p>
<pre><code class="language-cpp">void search_folder(const std::wstring&amp; folder)
{
  typedef boost::filesystem::wrecursive_directory_iterator directory_iterator;
  for (directory_iterator di(folder),end; di!=end; ++di) {
    if (boost::filesystem::is_regular_file(di-&gt;status())) {
      std::wcout &lt;&lt; di-&gt;path().filename() &lt;&lt; std::endl;
      // ... hier Datei öffnen und untersuchen
    }
  }
}
</code></pre>
<p>Falls du auf Unicode und Rekursion verzichten willst, kannst du diese leicht modifizierte Fassung verwenden:</p>
<pre><code class="language-cpp">void search_folder(const char *folder)
{
  typedef boost::filesystem::directory_iterator directory_iterator;
  for (directory_iterator di(folder),end; di!=end; ++di) {
    if (boost::filesystem::is_regular_file(di-&gt;status())) {
      std::cout &lt;&lt; di-&gt;path().filename() &lt;&lt; std::endl;
      // ... hier Datei öffnen und untersuchen
    }
  }
}
</code></pre>
<p>Nachteil ist die Verwendung von Boost.Filesystem, aber genau diese Bibliothek wird in C++0x (und sogar schon tr2) enthalten sein.</p>
<p>BTW@HLBB: warum wird in OrdnerDurchsuchen() die FindData() aufgerufen und auf Rekursion verwiesen? Und was ist der Sinn davon, bei</p>
<pre><code class="language-cpp">if(static_cast&lt;wstring&gt;(FData.cFileName) != L&quot;.&quot; &amp;&amp; static_cast&lt;wstring&gt;(FData.cFileName) != L&quot;..&quot;)
</code></pre>
<p>zu casten, noch dazu statisch, und mit einem nicht notwendigerweise Unicode-C-String zu vergleichen? Irgendwie habe ich das Gefühl, dass Windows deine wstring-Konsequenz nicht unterstützt, darum würde ich sie bleiben lassen. Übrigens ist es nicht unbedingt sinnvoll, immer auf <code>std::wstring</code> s zu beharren und C-Strings aus dem Weg zu gehen.<br />
Desweiteren sehe ich Vergleiche wie</p>
<pre><code class="language-cpp">if(subfolder == true)
</code></pre>
<p>als typische Anzeichen eines Anfängers an.<br />
Und schlussendlich hätte ich bei</p>
<pre><code class="language-cpp">if (hSearch == INVALID_HANDLE_VALUE) return;
</code></pre>
<p>- wie es übrigens bei mir von Boost.Filesystem intern gemacht wird - eine Ausnahme geworfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982449</guid><dc:creator><![CDATA[schönes_c++]]></dc:creator><pubDate>Thu, 18 Nov 2010 18:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalte aus .txt Files Filtern und ausgeben on Thu, 18 Nov 2010 18:36:42 GMT]]></title><description><![CDATA[<p>Das mit FileData sollte eigendlich OrdnerDurchsuchen sein... Das mit dem static cast gefällt mir auch nicht btw. Hatte wenig lust mir darüber Gedanken zu machen. Nicht jeder darf sich den Luxus leisten boost zu verwenden. Und den Rest kann er anpassen wie er möchte. Ging mir nur ums Prinzip.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982461</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 18 Nov 2010 18:36:42 GMT</pubDate></item></channel></rss>