<?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[return string nach std::transform(...)]]></title><description><![CDATA[<p>Hallo everybody,</p>
<p>ich habe folgende Funktion geschrieben, die mir von einem Dateinamen die filename extension abtrennt und zurückgibt</p>
<pre><code>std::string GetFileExtension(std::string filename)
{
    ///     VARIABLES
    ///-------------------------------------------------------------------------------------
    short int j=filename.size();
    std::string file_extension;
    ///-------------------------------------------------------------------------------------

    ///     CODE
    ///-------------------------------------------------------------------------------------
    while(filename[j-1]!='.')
    {
        j--;
    }

    file_extension=std::string(filename.begin()+j, filename.end());   /* getting file extension */
    /* making everything lower case */
    std::transform(file_extension.begin(), file_extension.end(), file_extension.begin(), ::tolower);
    return file_extension.c_str();
    ///-------------------------------------------------------------------------------------
    ///     END
}
</code></pre>
<p>Aufruf erfolgt in einer anderen Funktion per</p>
<pre><code>std::string temp_str;
temp_str=GetFileExtension(itr-&gt;path().filename().string());
</code></pre>
<p>itr ist ein boost::filesystem::directory_iterator.</p>
<p>Meine Frage ist jetzt, warum muss ich in der Funktion GetFileExtension den string mit file_extension.c_str() zurückgeben (hab's nur durch Probieren erraten)? Ohne &quot;.c_str()&quot; meldet sich der Debugger* beim durchsteppen mit</p>
<pre><code>Cannot open file: ../../../../src/gcc-4.7.1/libgcc/unwind-sjlj.c
At ../../../../src/gcc-4.7.1/libgcc/unwind-sjlj.c:127
</code></pre>
<p>Kann mir das jemand erklären, was std::transform an meinem String zu ändern scheint? Google konnte mir bis jetzt auch nicht wirklich helfen <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>
<p>* hier stand vormals Compiler</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/336221/return-string-nach-std-transform</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 17:56:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336221.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jan 2016 21:47:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to return string nach std::transform(...) on Sun, 10 Jan 2016 22:24:59 GMT]]></title><description><![CDATA[<p>Hallo everybody,</p>
<p>ich habe folgende Funktion geschrieben, die mir von einem Dateinamen die filename extension abtrennt und zurückgibt</p>
<pre><code>std::string GetFileExtension(std::string filename)
{
    ///     VARIABLES
    ///-------------------------------------------------------------------------------------
    short int j=filename.size();
    std::string file_extension;
    ///-------------------------------------------------------------------------------------

    ///     CODE
    ///-------------------------------------------------------------------------------------
    while(filename[j-1]!='.')
    {
        j--;
    }

    file_extension=std::string(filename.begin()+j, filename.end());   /* getting file extension */
    /* making everything lower case */
    std::transform(file_extension.begin(), file_extension.end(), file_extension.begin(), ::tolower);
    return file_extension.c_str();
    ///-------------------------------------------------------------------------------------
    ///     END
}
</code></pre>
<p>Aufruf erfolgt in einer anderen Funktion per</p>
<pre><code>std::string temp_str;
temp_str=GetFileExtension(itr-&gt;path().filename().string());
</code></pre>
<p>itr ist ein boost::filesystem::directory_iterator.</p>
<p>Meine Frage ist jetzt, warum muss ich in der Funktion GetFileExtension den string mit file_extension.c_str() zurückgeben (hab's nur durch Probieren erraten)? Ohne &quot;.c_str()&quot; meldet sich der Debugger* beim durchsteppen mit</p>
<pre><code>Cannot open file: ../../../../src/gcc-4.7.1/libgcc/unwind-sjlj.c
At ../../../../src/gcc-4.7.1/libgcc/unwind-sjlj.c:127
</code></pre>
<p>Kann mir das jemand erklären, was std::transform an meinem String zu ändern scheint? Google konnte mir bis jetzt auch nicht wirklich helfen <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>
<p>* hier stand vormals Compiler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482547</guid><dc:creator><![CDATA[Maisinator]]></dc:creator><pubDate>Sun, 10 Jan 2016 22:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to return string nach std::transform(...) on Sun, 10 Jan 2016 21:59:34 GMT]]></title><description><![CDATA[<p>Dein Problem hat nichts mit der Sprache C++ zu tun, ohne .c_str wäre auch korrekt.</p>
<p>Es ist auch keine Fehlermeldung vom Compiler, das Programm wird korrekt übersetzt. Es klingt eher nach einer Meldung seitens eines Debuggers.</p>
<p>Ich würde an deiner Stelle einfach mal Google zu dieser Art Meldung befragen, vermutlich liegt irgendeine Art von Fehlkonfiguration deiner Entwicklungsumbegung vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482549</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 10 Jan 2016 21:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to return string nach std::transform(...) on Sun, 10 Jan 2016 22:23:20 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Es ist auch keine Fehlermeldung vom Compiler, das Programm wird korrekt übersetzt. Es klingt eher nach einer Meldung seitens eines Debuggers.</p>
</blockquote>
<p>Das erklärt natürlich warum es nur beim Debuggen auftritt <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>
<p>Wie gesagt hat mir google nichts dazu geliefert. Sonst noch jemand ne Idee <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/2482554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482554</guid><dc:creator><![CDATA[Maisinator]]></dc:creator><pubDate>Sun, 10 Jan 2016 22:23:20 GMT</pubDate></item><item><title><![CDATA[Reply to return string nach std::transform(...) on Sun, 10 Jan 2016 23:54:56 GMT]]></title><description><![CDATA[<p>Maisinator schrieb:</p>
<blockquote>
<p>Wie gesagt hat mir google nichts dazu geliefert.</p>
</blockquote>
<p>Es liefert natürlich nur etwas, wenn man auch sucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482565</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 10 Jan 2016 23:54:56 GMT</pubDate></item><item><title><![CDATA[Reply to return string nach std::transform(...) on Mon, 11 Jan 2016 06:43:20 GMT]]></title><description><![CDATA[<p>schon auf die ide gekommen das die datei ../../../../src/gcc-4.7.1/libgcc/unwind-sjlj.c halt einfach nicht auf deinem Rechner ist?</p>
<p>das ist kein Fehler, der Debugger findet halt einfach nicht den Sourcecode vom entsprechenden Code den er ausführt und sagt er kann nicht in die Datei rein steppen.<br />
das ist nicht sonderlich fruchtbar da du in unwind-sjlj.c eh nichts findest was dich betrifft. ist eine datei aus libgcc, siehe <a href="https://github.com/gcc-mirror/gcc/blob/master/libgcc/unwind-sjlj.c" rel="nofollow">https://github.com/gcc-mirror/gcc/blob/master/libgcc/unwind-sjlj.c</a></p>
<p>Interessantere Fragen wären:<br />
warum const std::string&amp; filename eine nettere Funktion Signatur gibt<br />
warum du keine eigene loop zum finden des letzten Punkts nehmen solltest sondern std::string.find_last_of</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2482581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482581</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Mon, 11 Jan 2016 06:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to return string nach std::transform(...) on Mon, 11 Jan 2016 12:37:53 GMT]]></title><description><![CDATA[<p>kurze_frage schrieb:</p>
<blockquote>
<p>schon auf die ide gekommen das die datei ../../../../src/gcc-4.7.1/libgcc/unwind-sjlj.c halt einfach nicht auf deinem Rechner ist?</p>
<p>das ist kein Fehler, der Debugger findet halt einfach nicht den Sourcecode vom entsprechenden Code den er ausführt und sagt er kann nicht in die Datei rein steppen.<br />
das ist nicht sonderlich fruchtbar da du in unwind-sjlj.c eh nichts findest was dich betrifft. ist eine datei aus libgcc, siehe <a href="https://github.com/gcc-mirror/gcc/blob/master/libgcc/unwind-sjlj.c" rel="nofollow">https://github.com/gcc-mirror/gcc/blob/master/libgcc/unwind-sjlj.c</a></p>
<p>Interessantere Fragen wären:<br />
warum const std::string&amp; filename eine nettere Funktion Signatur gibt<br />
warum du keine eigene loop zum finden des letzten Punkts nehmen solltest sondern std::string.find_last_of</p>
</blockquote>
<p>Super vielen Dank. Dann werde ich mir heute abend mal das mit der Datei angucken.</p>
<p>Die Fragen sind in der Tat interessant. Warum? <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>
<p>Ich bin erst kürzlich zu C++ gewechselt und hatte vorher an der Uni auch nur eine Einführung in C wo eig nur die Basics Schleifen, If-Else etc in uns reingeprügelt wurden, daher bin ich für jeden Tipp dankbar <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/2482634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2482634</guid><dc:creator><![CDATA[Maisinator]]></dc:creator><pubDate>Mon, 11 Jan 2016 12:37:53 GMT</pubDate></item></channel></rss>