<?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[Doppelte Einträge aus Textdateienöschen]]></title><description><![CDATA[<p>Hallo,</p>
<p>es geht darum das ich eine Textdatei habe mit einer Grösse von über 70000 Zeilen<br />
In jeder Zeile stehen Daten ua auch eine Nummer. Diese Nummer kommt einige Male doppelt vor. Nun brauch ich eine Absolut performante C++ Funktion welceh die Datei öffnet, nach doppelten Einträgen sucht und diese entfernt bis auf einen (es können auch dreifach, mehrfach Einträge sein). Was wäre da eine schnelle gute Lösung oder hat evt. jemand sogar ein Beispiel?</p>
<p>Danke im voraus!<br />
MfG<br />
Meddten</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147826/doppelte-einträge-aus-textdateienöschen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 14:10:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147826.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 May 2006 12:32:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Sat, 20 May 2006 12:32:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es geht darum das ich eine Textdatei habe mit einer Grösse von über 70000 Zeilen<br />
In jeder Zeile stehen Daten ua auch eine Nummer. Diese Nummer kommt einige Male doppelt vor. Nun brauch ich eine Absolut performante C++ Funktion welceh die Datei öffnet, nach doppelten Einträgen sucht und diese entfernt bis auf einen (es können auch dreifach, mehrfach Einträge sein). Was wäre da eine schnelle gute Lösung oder hat evt. jemand sogar ein Beispiel?</p>
<p>Danke im voraus!<br />
MfG<br />
Meddten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061564</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Sat, 20 May 2006 12:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Sat, 20 May 2006 12:48:46 GMT]]></title><description><![CDATA[<p>Eine Möglichkeit mit Verwendung der STL ...</p>
<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;
#include &lt;iostream&gt;

using namespace std;

int main()
{
  /**
   * Container für die Speicherung der Werte
  */
  list&lt;int&gt; v;

  /**
   * Werte via Streamiterator auf Filestream aus der Datei (test.txt)
   * einlesen
  */
  ifstream fs(&quot;test.txt&quot;);
  if (!fs)
    return EXIT_FAILURE;

  istream_iterator&lt;int&gt; io(fs);
  istream_iterator&lt;int&gt; eos;

  copy(io, eos, back_inserter(v));

  /**
   * Container sortieren und Werte auf der Standardausgabe
   * ausgeben. Dabei mehrfach auftretende Einträge entfernen
  */
  v.sort();
  unique_copy(v.begin(), v.end()
	      , ostream_iterator&lt;int&gt;(cout, &quot;\n&quot;));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1061574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061574</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 20 May 2006 12:48:46 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 13:03:07 GMT]]></title><description><![CDATA[<p>Danke!</p>
<p>Ist ja schoen und gut</p>
<p>aber ich brauch die eintraeg als Text also hab ich int auf char geaendert</p>
<p>Jetzt geht ncihts mehr nur Hieroglyphen hab ich im output</p>
<p>Hab dann das sort weggenommen und die Hieroglyphen waren weg, aber leider die doppelten Eintraege immer noch da? Trotz unique_copy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062774</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Mon, 22 May 2006 13:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 13:13:45 GMT]]></title><description><![CDATA[<p>...hier stand mist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062777</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 22 May 2006 13:13:45 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 13:31:24 GMT]]></title><description><![CDATA[<p>@Meddten<br />
Wenn ich dich richtig verstehe, besteht eine Zeile aus einer Nummer und anderen Daten (Text?). Wenn eine Nummer doppelt vorkommt, ist der Text der beiden identischen Nummern trotzdem unterschiedlich?</p>
<p>Gib bitte mal ein paar Beispielzeilen der Datei her, damit wir dir helfen können.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062789</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 22 May 2006 13:31:24 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 13:36:41 GMT]]></title><description><![CDATA[<p>Kleiner Auszug aus einer der besagten Textdateien.</p>
<blockquote>
<p>PS 446A9445B3B20B3CE1000000AC1002A6 20060518 022707 S -&gt;Dokument PS / 446A9445B3B20B3CE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446A9469B3B20B3CE1000000AC1002A6 20060518 022813 S -&gt;Dokument PS / 446A9469B3B20B3CE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446A94A6B3B20B3CE1000000AC1002A6 20060518 022803 S -&gt;Dokument PS / 446A94A6B3B20B3CE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446A9513B3B20B3CE1000000AC1002A6 20060518 022810 S -&gt;Dokument PS / 446A9513B3B20B3CE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446A9525B3B20B3CE1000000AC1002A6 20060518 022748 S -&gt;Dokument PS / 446A9525B3B20B3CE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B2E0F274800EEE1000000AC1002A6 20060518 021832 S -&gt;Dokument PS / 446B2E0F274800EEE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B440725F800ECE1000000AC1002A6 20060518 021630 S -&gt;Dokument PS / 446B440725F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B44C825F800ECE1000000AC1002A6 20060518 021848 S -&gt;Dokument PS / 446B44C825F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B44F825F800ECE1000000AC1002A6 20060518 022056 S -&gt;Dokument PS / 446B44F825F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B451325F800ECE1000000AC1002A6 20060518 022345 S -&gt;Dokument PS / 446B451325F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B457325F800ECE1000000AC1002A6 20060518 021948 S -&gt;Dokument PS / 446B457325F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B458F25F800ECE1000000AC1002A6 20060518 022816 S -&gt;Dokument PS / 446B458F25F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B459D25F800ECE1000000AC1002A6 20060518 022039 S -&gt;Dokument PS / 446B459D25F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B463325F800ECE1000000AC1002A6 20060518 022324 S -&gt;Dokument PS / 446B463325F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446B47D525F800ECE1000000AC1002A6 20060518 022425 S -&gt;Dokument PS / 446B47D525F800ECE1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446BE021AFF000E2E1000000AC1002A6 20060518 021943 S -&gt;Dokument PS / 446BE021AFF000E2E1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 446BE028AFF000E2E1000000AC1002A6 20060518 021936 S -&gt;Dokument PS / 446BE028AFF000E2E1000000AC1002A6 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 1527D469631F4D13802C603175DF3274 20060321 113139 B -&gt;Dokument PS / 1527D469631F4D13802C603175DF3274 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS B39D8780EDCB40AB88AC8452C88CF46F 20060321 113139 B -&gt;Dokument PS / B39D8780EDCB40AB88AC8452C88CF46F nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 1527D469631F4D13802C603175DF3274 20060321 113139 B -&gt;Dokument PS / 1527D469631F4D13802C603175DF3274 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS B39D8780EDCB40AB88AC8452C88CF46F 20060321 113139 B -&gt;Dokument PS / B39D8780EDCB40AB88AC8452C88CF46F nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 1527D469631F4D13802C603175DF3274 20060321 113139 B -&gt;Dokument PS / 1527D469631F4D13802C603175DF3274 nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS B39D8780EDCB40AB88AC8452C88CF46F 20060321 113139 B -&gt;Dokument PS / B39D8780EDCB40AB88AC8452C88CF46F nicht in Verknüpfungstabellen TOA0x enthalten!<br />
PS 03D1B0B475DD4F9FBF76766841951CB7 20060322 103653 B -&gt;Dokument PS / 03D1B0B475DD4F9FBF76766841951CB7 nicht in Verknüpfungstabellen TOA0x enthalten!</p>
</blockquote>
<p>Der erste Teil jeder Zeile (PS 446A9445B3B20B3CE1000000AC1002A6 20060518)</p>
<p>kann und kommt abundzu mehrmals vor manchmal nicht</p>
<p>bei PS B39D8780EDCB40AB88AC8452C88CF46F 20060321 ist dies der Fall</p>
<p>Ich will nun alle Eintraege die doppelt sind (z.B PS B39D8780EDCB40AB88AC8452C88CF46F 20060321 bis auf einen Eintrag weghaben)</p>
<p>Sortieren ist unwichtig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062793</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Mon, 22 May 2006 13:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 13:46:29 GMT]]></title><description><![CDATA[<p>Ok, du machst das so: Du liest Zeilenweise ein (mittels getline und string), dabei splittest du die Zeile an der besagten Stelle in zwei Teile (such am Besten nach dem dritten Leerzeichen, um die Abgrenzung herauszufinden).<br />
Den ersten Teilstring (z.B. PS B39D8780EDCB40AB88AC8452C88CF46F 20060321) verwendest du als Schlüssel für eine std::map, der zweite Teil ist der Wert zum Schlüssel (z.B. 113139 B -&gt;Dokument PS / B39D8780EDCB40AB88AC8452C88CF46F nicht in Verknüpfungstabellen TOA0x enthalten!).</p>
<p>Die map lässt nur eindeutige Schlüssel zu und sortiert von Haus aus.</p>
<p>Bist du fertig mit Einlesen/Einfügen, schreibst du die map in eine Datei rein. Dann bist fertig.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062808</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 22 May 2006 13:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 14:07:27 GMT]]></title><description><![CDATA[<p>Bin nohc nicht so der Pro. hast du Codebeispiele zum anschauen wie man ca. vorgeht. Es muss nicht die Loesung des Probs sein (will noch was lernen by doing) aber so die Verwendung von map etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062832</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Mon, 22 May 2006 14:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Mon, 22 May 2006 14:11:19 GMT]]></title><description><![CDATA[<p>Also auf <a href="http://www.cppreference.com" rel="nofollow">www.cppreference.com</a> findest du die Dokumentation zur STL.</p>
<p>Ein Beispiel zu map:</p>
<pre><code class="language-cpp">#include &lt;map&gt;

map&lt;int, double&gt; m;  //Schlüssel ist ein int, der dazugehörige Wert ein double

m.insert(make_pair(5 , 2.5));
m.insert(make_pair(1 , 0.5));
m.insert(make_pair(8 , 4.0));

//So, der Schlüssel 5 existiert bereits in der map, daher wird das nicht eingefügt. 
m.insert(make_pair(5 , 3.5));
</code></pre>
<p>Über einen iterator kannst du das relativ einfach in den ofstream schreiben.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062835</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 22 May 2006 14:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Tue, 23 May 2006 07:16:21 GMT]]></title><description><![CDATA[<p>Wenn du mir jetzt noch sagst wie ich das in einen Iterator bringe und in ein File dann bin ich happy.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063242</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Tue, 23 May 2006 07:16:21 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Tue, 23 May 2006 07:26:09 GMT]]></title><description><![CDATA[<p>Meddten schrieb:</p>
<blockquote>
<p>Wenn du mir jetzt noch sagst wie ich das in einen Iterator bringe und in ein File dann bin ich happy.</p>
</blockquote>
<p>na dann:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;map&gt;

using namespace std;

typedef map&lt;int, double&gt; Cont;

int main() {
  Cont m;  //Schlüssel ist ein int, der dazugehörige Wert ein double

  m.insert(make_pair(5 , 2.5));
  m.insert(make_pair(1 , 0.5));
  m.insert(make_pair(8 , 4.0));

  //So, der Schlüssel 5 existiert bereits in der map, daher wird das nicht eingefügt.
  m.insert(make_pair(5 , 3.5));

  ofstream ofs(&quot;output.txt&quot;);
  if (!ofs) 
    return 1;

  Cont::iterator it = m.begin();
  for ( ; it != m.end(); ++it)
    ofs&lt;&lt;it-&gt;first&lt;&lt;' '&lt;&lt;it-&gt;second&lt;&lt;'\n';

  ofs.close();
  return 0;
};
</code></pre>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063249</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 23 May 2006 07:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Tue, 23 May 2006 09:11:42 GMT]]></title><description><![CDATA[<p>Ok thx ein Prob gibts beim einlesen der quelldatei</p>
<pre><code class="language-cpp">ifstream fs(&quot;d:/test.txt&quot;); 
	if (!fs) 
		cout&lt;&lt;&quot;failed&quot;; return EXIT_FAILURE;

	string testline;

	getline(fs, testline, ' ');

	cout&lt;&lt;testline&lt;&lt;endl;
</code></pre>
<p>Obiges ist nur zum Test</p>
<p>failed bekomm ich nicht oeffnen klappt also</p>
<p>im test.txt steht in der ersten Zeile auch etwas</p>
<p>PS 54654646546 usw</p>
<p>das cout gibt nichts aus muesste aber doch theoretisch PS ausgeben oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063333</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Tue, 23 May 2006 09:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Tue, 23 May 2006 09:14:44 GMT]]></title><description><![CDATA[<p>Meddten schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ifstream fs(&quot;d:/test.txt&quot;); 
	if (!fs) 
		cout&lt;&lt;&quot;failed&quot;; return EXIT_FAILURE;
</code></pre>
</blockquote>
<p>Wenn man den Code mal ausschreibt und sauber formatiert, kommt das raus:</p>
<pre><code class="language-cpp">ifstream fs(&quot;d:/test.txt&quot;);
if (!fs)
  cout&lt;&lt;&quot;failed&quot;;  //hier solltest du cerr statt cout verwenden
return EXIT_FAILURE;
</code></pre>
<p>Blub. Setz Klammern für die if-Anweisung. Momentan führt er die return Anweisung nämlich immer aus, egal ob fs in nem Fehlerzustand ist, oder nicht.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063340</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 23 May 2006 09:14:44 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Tue, 23 May 2006 09:31:31 GMT]]></title><description><![CDATA[<p>Ah jo lol thx</p>
<p>Sorry noch eine Frage (Tut mir Leid ich lerne noch)</p>
<p>geline gibt ja immer die letzte Zeile aus</p>
<p>Wie kann ich dioe erste Zeile lesen, dann zur nächsten springen usw. so damit ich jede Zeile vorne und hinten beschneiden kann um sie in die map einzutragen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063348</guid><dc:creator><![CDATA[Meddten]]></dc:creator><pubDate>Tue, 23 May 2006 09:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelte Einträge aus Textdateienöschen on Tue, 23 May 2006 09:36:47 GMT]]></title><description><![CDATA[<p>Meddten schrieb:</p>
<blockquote>
<p>Ah jo lol thx</p>
<p>Sorry noch eine Frage (Tut mir Leid ich lerne noch)</p>
<p>geline gibt ja immer die letzte Zeile aus</p>
<p>Wie kann ich dioe erste Zeile lesen, dann zur nächsten springen usw. so damit ich jede Zeile vorne und hinten beschneiden kann um sie in die map einzutragen?</p>
</blockquote>
<p>Immer eine Zeile komplett einlesen? Siehe hier:</p>
<pre><code class="language-cpp">ifstream ifs(&quot;test.txt&quot;);
if (!ifs)
  return 1;

while (ifs.good()) {
  string s;
  getline(ifs, s);
  //Evtl. aufsplitten und...
  //in irgendeinen container einfügen
};

ifs.close();
</code></pre>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063357</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 23 May 2006 09:36:47 GMT</pubDate></item></channel></rss>