<?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 gesucht]]></title><description><![CDATA[<p>Kann mir zufällig jemand verraten, wie das Äquivant zu Mid heißt? Die Funktion liefert in VB einen String aus einem String von Pos x für y Zeichen zurück. Sowas bräuchte ich für C++</p>
<p>Ich lasse mir alle Dateien eines Verzeichnisses zurückgeben und möchte nun prüfen, ob diese Datei mein Dateiformat hat. Dazu wollte ich die letzten 4 Byte vergleichen (.txt)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145378/funktion-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 06:28:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145378.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Apr 2006 12:52:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 12:52:51 GMT]]></title><description><![CDATA[<p>Kann mir zufällig jemand verraten, wie das Äquivant zu Mid heißt? Die Funktion liefert in VB einen String aus einem String von Pos x für y Zeichen zurück. Sowas bräuchte ich für C++</p>
<p>Ich lasse mir alle Dateien eines Verzeichnisses zurückgeben und möchte nun prüfen, ob diese Datei mein Dateiformat hat. Dazu wollte ich die letzten 4 Byte vergleichen (.txt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046335</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Thu, 27 Apr 2006 12:52:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 12:53:54 GMT]]></title><description><![CDATA[<p><a href="http://www.cppreference.com/cppstring/substr.html" rel="nofollow">std::string::substr</a></p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046336</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Thu, 27 Apr 2006 12:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 12:59:04 GMT]]></title><description><![CDATA[<p>UNeverNo schrieb:</p>
<blockquote>
<p>Ich lasse mir alle Dateien eines Verzeichnisses zurückgeben und möchte nun prüfen, ob diese Datei mein Dateiformat hat. Dazu wollte ich die letzten 4 Byte vergleichen (.txt)</p>
</blockquote>
<p>Dir ist doch hoffentlich klar, daß dieser Vergleich nicht besonders zuverlässig ist - die Dateiendung kann frei vergeben werden und gerade .txt ist schon von Windows reserviert (für ASCII-Textdateien). Setz dir lieber eine eindeutige Kennung an den Anfang der Datei, die du überprüfst (ist zwar aufwendiger, weil du die Datei dazu öffnen und teilweise einlesen mußt, aber auch sicherer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046344</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 27 Apr 2006 12:59:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 13:12:00 GMT]]></title><description><![CDATA[<p>Das mit txt war doch nur ein Beispiel - eigentlich geht's ja um XML-Dateien, aus denen ich SQL-Befehle generieren will <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>
<p>Mal noch eine andere Frage im Zusammenhang mit substr - wie bekomme ich die Länge des Strings zurück?</p>
<p>Es funktioniert weder</p>
<pre><code class="language-cpp">tmp = tmp.substr(tmp.size, 4);
</code></pre>
<p>noch</p>
<pre><code class="language-cpp">tmp = tmp.substr(size(tmp), 4);
</code></pre>
<p>noch das selbe mit length.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046363</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Thu, 27 Apr 2006 13:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 13:21:16 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">tmp = tmp.substr(tmp.size() -4, 4);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046369</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 27 Apr 2006 13:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 14:52:12 GMT]]></title><description><![CDATA[<p>Jetzt scheitert es nur noch daran, dass ich den Inhalt der Speicherzelle, auf die der Pointer entry-&gt;d_name zeigt, nicht in den String geschoben bekomme.</p>
<p>Wenn ich</p>
<pre><code class="language-cpp">string tmp = entry-&gt;d_name;
</code></pre>
<p>zuweise, dann wird ja nur die Speicheradresse kopiert, wie komme ich jetzt an den Inhalt?<br />
Irgendwie sind Pointer ein Buch mit 7 Siegeln für mich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046443</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Thu, 27 Apr 2006 14:52:12 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 14:59:36 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">string tmp = *(entry-&gt;d_name);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046451</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 27 Apr 2006 14:59:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 19:40:58 GMT]]></title><description><![CDATA[<p>Hatte es mit &amp; versucht, aber das braucht man wohl bei Referenzen oder so <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>
<p>Allerdings läuft es jetzt immer noch nicht. Der Debugger von Dev-C++ ist allerdings auch recht bescheiden.<br />
Ich häng mal den kommentierten Code ran.</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;dirent.h&gt;
#include &lt;string&gt;

using namespace std;

int main(void)
{
    DIR *hdir;
    struct dirent *entry;

    hdir = opendir(&quot;.&quot;);
    do
    {
        entry = readdir(hdir);
        if (entry)
        {
            string tmp;
            tmp = *(entry-&gt;d_name);
            if (tmp.size() &gt; 4) //string sollte mind. 5 zeichen haben, sonst gibt's probleme beim kürzen
            {
                tmp = tmp.substr(tmp.size() - 5, 4);
                if(tmp == &quot;.xml&quot;)
                {
                    ifstream in(entry-&gt;d_name);  //Eingabedatei öffnen
                    if(!in)
                    {
                        cout &lt;&lt; &quot;Fehler beim Öffnen von Datei xyz&quot;; //muß noch variabel gestaltet werden
                        return 1;
                    }   
                    char buf[255]; //Puffer
                    while(in.getline(buf, 255)) //solange nicht Dateiende erreicht, zeilenweise einlesen
                    {
                        cout &lt;&lt; buf;
                    }    
                    in.close(); //Eingabedatei schließen
                }    
            }     
        }
    } while (entry);
    closedir(hdir);

    getchar();
    return 0;
}
</code></pre>
<p>Also anscheinend wird der Name der potentiellen Datei, die auch ein Ordner sein kann, nicht korrekt in tmp geschrieben, da die Schleife bei tmp.size &gt; 4 nie betreten wird - sieht da jemand einen Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046715</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Thu, 27 Apr 2006 19:40:58 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Thu, 27 Apr 2006 19:50:42 GMT]]></title><description><![CDATA[<p>mach doch einfach mal &quot;cout&quot; - debugging. bau an viele stellen ein cout ein, der dir die informationen über bestimmte variablen ausgibt(oder einfach nur eine meldung das du weist, das programm ist jetzt in if schleife), so findest du schneller heraus worans liegt, als wenn du immer auf replys im forum wartest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046726</guid><dc:creator><![CDATA[Hubid]]></dc:creator><pubDate>Thu, 27 Apr 2006 19:50:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Fri, 28 Apr 2006 05:50:52 GMT]]></title><description><![CDATA[<p>Anscheinend wird nur das erste Zeichen von entry-&gt;d_name in tmp geschoben, daher arbeitet er auch den if-Zweig nicht ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046830</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Fri, 28 Apr 2006 05:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Fri, 28 Apr 2006 07:38:01 GMT]]></title><description><![CDATA[<p>Tja, wenn entry-&gt;d_name ein const char* ist dann ist die Dereferenzierung dieses const char* ein char... und das ist ein einzelnes Zeichen <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>
<p>Allerdings wüsste ich nicht was an</p>
<pre><code class="language-cpp">string tmp( entry-&gt;d_name );
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">string tmp = entry-&gt;d_name;
</code></pre>
<p>auszusetzen sein sollte.</p>
<p>EDIT:<br />
dirent.d_name ist sogar nichtmal const...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046873</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 28 Apr 2006 07:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Fri, 28 Apr 2006 14:03:03 GMT]]></title><description><![CDATA[<p>Jetzt scheint es endlich zu klappen, danke allen <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="👍"
    /></p>
<p>Die nächsten Probleme werden nicht auf sich warten lassen... <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/1047115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1047115</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Fri, 28 Apr 2006 14:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Sat, 29 Apr 2006 12:08:32 GMT]]></title><description><![CDATA[<p>Diesmal brauche ich eine Splitfunktion, d.h. eine, die einen String in Teilstrings anhand eines Separators zerteilt. Gibt's da was?</p>
<p>Ansonsten hätte ich eine Frage zur Rückgabe von Funktionen. Kann man direkt ein Array zurückgeben oder muss man das mit dem Zeiger auf das Nullte Element des Arrays machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1047634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1047634</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Sat, 29 Apr 2006 12:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion gesucht on Sat, 29 Apr 2006 12:24:38 GMT]]></title><description><![CDATA[<p>UNeverNo schrieb:</p>
<blockquote>
<p>Diesmal brauche ich eine Splitfunktion, d.h. eine, die einen String in Teilstrings anhand eines Separators zerteilt. Gibt's da was?</p>
</blockquote>
<p>Vorgefertigtes gibt es da nichts, aber du kannst dir mit den String-Methoden find_first_of(), find_first_not_of() (suche Seperator-Grenzen) und substr() (schneide Teilstring aus) selber was zusammenbauen.</p>
<blockquote>
<p>Ansonsten hätte ich eine Frage zur Rückgabe von Funktionen. Kann man direkt ein Array zurückgeben oder muss man das mit dem Zeiger auf das Nullte Element des Arrays machen?</p>
</blockquote>
<p>Arrays übergeben geht direkt nicht. Und bei Pointern mußt du aufpassen, daß das Ziel auch nach Funktionsende gültig bleibt (also entweder static Variablen (aber dann mußt du das Ergebnis vor dem nächsten Aufruf verarbeitet haben), Heap-Blöcke (die muß der Nutzer wieder freigeben) oder vom Hauptprogramm übergebene Parameter).<br />
Als Alternativen bietet sich noch an, den Nutzer mit der Speicherreservierung zu beauftragen (du nimmst ein Array als Parameter entgegen und schreibst deine Rückgaben dort rein) oder STL-Container weiterzureichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1047660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1047660</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 29 Apr 2006 12:24:38 GMT</pubDate></item></channel></rss>