<?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 zum ändern einer Dateiendung]]></title><description><![CDATA[<p>Hallo liebe <a href="http://c-plusplus.net" rel="nofollow">c-plusplus.net</a> Community,</p>
<p>zuersteinmal möcht ich kurz meinen Momentanen Code posten.</p>
<pre><code class="language-cpp">void Path::ChangeExtension(const wchar_t strPath[MAX_PATH], const wchar_t strExtension[MAX_PATH])
{
	wchar_t resultPath[MAX_PATH];
	if (path_too_long(strPath, strExtension))
		return;

	int len = wcslen(strPath);
	int index = len;
	for (index = len; index != 0; index--)
	{
		if (strPath[index] == '.') 
		{
			break;
		}
	}
	if (index != 0)
	{
		wcsncpy_s(resultPath, strPath, index);
		wcscat_s(resultPath, strExtension);
	}
	else 
	{
		wcscpy_s(resultPath, strPath);
		wcscat_s(resultPath, L&quot;.&quot;);
		wcscat_s(resultPath, strExtension);
	}
	return;
}
</code></pre>
<p>Diese Funktion soll dasselbe erfüllen wie System.IO.Path.ChangeExtension(), und ist Teil meiner Filesystem Klasse. Ich suche nun nach einer Möglichkeit, den resultPath zu returnen. Ich habe versucht ihn einfach direkt zu returnen, was aber nicht funktionierte... Ich wäre für einen guten Lösungsvorschlag sehr dankbar! <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>Mit freundlichen Grüßen,</p>
<p>Soulzter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298163/funktion-zum-ändern-einer-dateiendung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 01:28:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298163.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jan 2012 19:48:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 19:48:50 GMT]]></title><description><![CDATA[<p>Hallo liebe <a href="http://c-plusplus.net" rel="nofollow">c-plusplus.net</a> Community,</p>
<p>zuersteinmal möcht ich kurz meinen Momentanen Code posten.</p>
<pre><code class="language-cpp">void Path::ChangeExtension(const wchar_t strPath[MAX_PATH], const wchar_t strExtension[MAX_PATH])
{
	wchar_t resultPath[MAX_PATH];
	if (path_too_long(strPath, strExtension))
		return;

	int len = wcslen(strPath);
	int index = len;
	for (index = len; index != 0; index--)
	{
		if (strPath[index] == '.') 
		{
			break;
		}
	}
	if (index != 0)
	{
		wcsncpy_s(resultPath, strPath, index);
		wcscat_s(resultPath, strExtension);
	}
	else 
	{
		wcscpy_s(resultPath, strPath);
		wcscat_s(resultPath, L&quot;.&quot;);
		wcscat_s(resultPath, strExtension);
	}
	return;
}
</code></pre>
<p>Diese Funktion soll dasselbe erfüllen wie System.IO.Path.ChangeExtension(), und ist Teil meiner Filesystem Klasse. Ich suche nun nach einer Möglichkeit, den resultPath zu returnen. Ich habe versucht ihn einfach direkt zu returnen, was aber nicht funktionierte... Ich wäre für einen guten Lösungsvorschlag sehr dankbar! <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>Mit freundlichen Grüßen,</p>
<p>Soulzter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168104</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sat, 14 Jan 2012 19:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 20:33:38 GMT]]></title><description><![CDATA[<p>Sieht wie C aus.<br />
Da das aber der C++-Bereich ist: <code>std::wstring</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168123</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 14 Jan 2012 20:33:38 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 20:46:22 GMT]]></title><description><![CDATA[<p>aber die Funktionen nehmen ja wchar_t's an und keine wstrings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168131</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sat, 14 Jan 2012 20:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 21:44:10 GMT]]></title><description><![CDATA[<p>Was hat das damit zu tun, was DEINE Funktion annimmt, bzw. zurückgibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168159</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Sat, 14 Jan 2012 21:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 22:02:36 GMT]]></title><description><![CDATA[<p>Heißt das also, ich kann meine Klasse praktisch komplett mit wstrings coden, muss aber jeweils den member c_str() benutzen, um die wstring's dann in die für die einzelnen c funktionen nötigen wchar_t's zu konvertieren?</p>
<p>Das wäre natürlich absolut kein Problem, allerdings würd ich gerne noch ne Möglichkeit wissen, wie ich das ganze mit den C Strings (wchar_t) lösen kann.</p>
<p>Dann würde ich nämlich jeweils 2 Funktionen schreiben, von denen die eine die wstrings frisst und die andere Funktion dann die wchar_t's.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168163</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sat, 14 Jan 2012 22:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:28:52 GMT]]></title><description><![CDATA[<p>Soulzter schrieb:</p>
<blockquote>
<p>Dann würde ich nämlich jeweils 2 Funktionen schreiben, von denen die eine die wstrings frisst und die andere Funktion dann die wchar_t's.</p>
</blockquote>
<p>Und was bringt das?</p>
<p>Arrays sind mühsam. Das merkst du alleine schon daran, dass du sie in deiner Funktion nicht als Rückgabetypen verwenden kannst. Und du musst dich auf eine willkürliche Länge <code>MAX_PATH</code> festlegen. Zudem befinden sich die ganzen <code>_s</code> -Funktionen nicht im C++-Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168184</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:28:52 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:31:47 GMT]]></title><description><![CDATA[<p>Also sollte ich schauen, dass ich mit ner referenz in der funktion arbeite. Richtig?</p>
<p>Ich soll aber die _s Funktionen benutzen, um die ganzen unsafe-warnungen zu umgehen, die mir mein Compiler ausgibt. Das müsste doch heißen, solange man auf Windows als Platform bleibt, sind die _s Funktionen kein Problem, richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168186</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:31:47 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:44:40 GMT]]></title><description><![CDATA[<p>Soulzter schrieb:</p>
<blockquote>
<p>Also sollte ich schauen, dass ich mit ner referenz in der funktion arbeite. Richtig?</p>
</blockquote>
<p>Nein. Du übergibst ja schon Zeiger, auch wenn sie in der Parameterliste wie Arrays aussehen.</p>
<p>Soulzter schrieb:</p>
<blockquote>
<p>Ich soll aber die _s Funktionen benutzen, um die ganzen unsafe-warnungen zu umgehen, die mir mein Compiler ausgibt.</p>
</blockquote>
<p>&quot;unsafe&quot; kommt daher, wenn du über den Puffer hinausschreibst, also dir nicht über die Stringlängen im Klaren bist. Du legst dich dabei immer auf eine bestimmte (willkürliche) Länge fest.</p>
<p>Das sind wiederum alles Probleme, die man mit <code>std::wstring</code> nicht hat... Überhaupt hättest du einen Bruchteil des Codes, wenn du die Memberfunktionen <code>rfind()</code> und <code>replace()</code> verwenden könntest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168187</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:46:24 GMT]]></title><description><![CDATA[<p>Birgt nicht std::wstring einen gewissen Geschwindigkeitsverlust?<br />
Und lässt sich std::wstring genau so mit MAX_PATH als Länge initalisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168188</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:50:00 GMT]]></title><description><![CDATA[<p>Soulzter schrieb:</p>
<blockquote>
<p>Birgt nicht std::wstring einen gewissen Geschwindigkeitsverlust?</p>
</blockquote>
<p>Die dynamischen Allokationen sind vielleicht etwas langsamer. Aber ich habe sehr grosse Zweifel, dass es bei dir genau auf diesen Unterschied ankommt, sodass sich hässlicher Code deswegen lohnen würde.</p>
<p>Soulzter schrieb:</p>
<blockquote>
<p>Und lässt sich std::wstring genau so mit MAX_PATH als Länge initalisieren?</p>
</blockquote>
<p>Grundsätzlich ja, aber da <code>MAX_PATH</code> nur notwendiges Übel ist, um keine Pufferüberläufe zu haben, ist das gar nicht nötig. <code>std::wstring</code> reserviert sich den benötigten Speicherplatz automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168189</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:51:56 GMT]]></title><description><![CDATA[<p>Und ich kann std::wstring von der Funktion ausgeben lassen, ohne es nachher mit delete oder free &quot;töten&quot; zu müssen, richtig?</p>
<p>Das heißt ich brauche mich nicht um eine Garbage Collection kümmern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168190</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:51:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sat, 14 Jan 2012 23:54:39 GMT]]></title><description><![CDATA[<p>Soulzter schrieb:</p>
<blockquote>
<p>Und ich kann std::wstring von der Funktion ausgeben lassen, ohne es nachher mit delete oder free &quot;töten&quot; zu müssen, richtig?</p>
</blockquote>
<p>Richtig. Das ist ein wesentlicher Vorteil von Containern.</p>
<p>Du kannst <code>std::wstring</code> -Objekte auch normal kopieren, zuweisen, an Funktionen übergeben und von ihnen zurückgeben. All die Spezialbehandlungen und impliziten &quot;Features&quot; von Arrays entfallen, du hast ganz normale Wertsemantik wie z.B. bei <code>int</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168193</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Jan 2012 23:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion zum ändern einer Dateiendung on Sun, 15 Jan 2012 00:15:37 GMT]]></title><description><![CDATA[<p>Okay besten Dank!</p>
<p>Damit hast du mir sehr geholfen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2168194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2168194</guid><dc:creator><![CDATA[Soulzter]]></dc:creator><pubDate>Sun, 15 Jan 2012 00:15:37 GMT</pubDate></item></channel></rss>