<?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, um Dateipfade&#x2F;Namen vernünftig zu sortieren]]></title><description><![CDATA[<p>Hallo, ich habe ein Programm geschrieben, mit dem ich alle Dateien in sämtlichen Unterordnern eines bestimmten Pfades auflisten kann. Die Klasse dafür sieht ungefähr so aus:</p>
<pre><code class="language-cpp">class datei
{
   public: //zur Veranschaulichung

    std::string path; //zB.: &quot;C:\\test&quot;
    std::string name; //zB.: &quot;Neues Textdokument.txt&quot;
};
</code></pre>
<p>Die Dateien lese ich alle in einen vector ein:</p>
<pre><code class="language-cpp">std::vector&lt;datei&gt; MeineDateien;
</code></pre>
<p>Mein Ziel ist es jetzt, die Dateien im vector so anzuordnen, wie sie im &quot;Datei-Baum&quot; des Explorers von oben nach unten angezeigt würden.<br />
Mein erster Ansatz sah so aus:</p>
<pre><code class="language-cpp">bool pred(const datei&amp; a, const datei&amp; b)
{
    if(a.path==b.path)
        return a.name&lt;b.name;
    if(b.path.find(a.path)!=std::string::npos)
        return false;
    if(a.path.find(b.path)!=std::string::npos)
        return false;
    return true;
}
//...
sort(MeineDateien.begin(), MeineDateien.end(), pred);
</code></pre>
<p>Das scheint aber nicht richtig zu funktionieren, denn in der sortieren Liste kommen ab und zu solche Einträge zu Stande:</p>
<pre><code>C:\A\B\C        Datei 1
C:\A\B\C        Datei 2
C:\A\B          Datei x  //sollte eigentlich weiter oben stehen
C:\A\B\C        Datei 3
</code></pre>
<p>Fällt jemand eine bessere Methode ein, die Elemente des vectors zu sortieren? Ich hoffe ihr versteht das Problem <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/topic/252883/funktion-um-dateipfade-namen-vernünftig-zu-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:13:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252883.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Oct 2009 23:07:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion, um Dateipfade&#x2F;Namen vernünftig zu sortieren on Sun, 25 Oct 2009 23:07:11 GMT]]></title><description><![CDATA[<p>Hallo, ich habe ein Programm geschrieben, mit dem ich alle Dateien in sämtlichen Unterordnern eines bestimmten Pfades auflisten kann. Die Klasse dafür sieht ungefähr so aus:</p>
<pre><code class="language-cpp">class datei
{
   public: //zur Veranschaulichung

    std::string path; //zB.: &quot;C:\\test&quot;
    std::string name; //zB.: &quot;Neues Textdokument.txt&quot;
};
</code></pre>
<p>Die Dateien lese ich alle in einen vector ein:</p>
<pre><code class="language-cpp">std::vector&lt;datei&gt; MeineDateien;
</code></pre>
<p>Mein Ziel ist es jetzt, die Dateien im vector so anzuordnen, wie sie im &quot;Datei-Baum&quot; des Explorers von oben nach unten angezeigt würden.<br />
Mein erster Ansatz sah so aus:</p>
<pre><code class="language-cpp">bool pred(const datei&amp; a, const datei&amp; b)
{
    if(a.path==b.path)
        return a.name&lt;b.name;
    if(b.path.find(a.path)!=std::string::npos)
        return false;
    if(a.path.find(b.path)!=std::string::npos)
        return false;
    return true;
}
//...
sort(MeineDateien.begin(), MeineDateien.end(), pred);
</code></pre>
<p>Das scheint aber nicht richtig zu funktionieren, denn in der sortieren Liste kommen ab und zu solche Einträge zu Stande:</p>
<pre><code>C:\A\B\C        Datei 1
C:\A\B\C        Datei 2
C:\A\B          Datei x  //sollte eigentlich weiter oben stehen
C:\A\B\C        Datei 3
</code></pre>
<p>Fällt jemand eine bessere Methode ein, die Elemente des vectors zu sortieren? Ich hoffe ihr versteht das Problem <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/1798302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798302</guid><dc:creator><![CDATA[Crunk]]></dc:creator><pubDate>Sun, 25 Oct 2009 23:07:11 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion, um Dateipfade&#x2F;Namen vernünftig zu sortieren on Sun, 25 Oct 2009 23:10:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool pred(const datei&amp; a, const datei&amp; b)
{
    if(a.path!=b.path)
        return a.path&lt;b.path;
    retirn a.name&lt;b.name;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798304</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 25 Oct 2009 23:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion, um Dateipfade&#x2F;Namen vernünftig zu sortieren on Mon, 26 Oct 2009 00:14:32 GMT]]></title><description><![CDATA[<p>manchmal kann die Lösung so einfach sein... Danke <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/1798313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798313</guid><dc:creator><![CDATA[Crunk]]></dc:creator><pubDate>Mon, 26 Oct 2009 00:14:32 GMT</pubDate></item></channel></rss>