<?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[Strings addition abkürtzen]]></title><description><![CDATA[<p>hi,<br />
wenn ich mit cstring arbeite und mehrere parts zusammensetzten möchte, muss ich ja immer mit strcpy() arbeiten. Mit C++ muss das doch aber eifacher gehen. Gibt es eine abkürzung wie in perl oder python (&quot;.&quot; und &quot;+&quot;) oder wie bei cout (&lt;&lt;), die einem die Arbeit mit Strings etwas vereinfacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145968/strings-addition-abkürtzen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 13:16:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145968.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 May 2006 20:37:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strings addition abkürtzen on Tue, 02 May 2006 20:37:23 GMT]]></title><description><![CDATA[<p>hi,<br />
wenn ich mit cstring arbeite und mehrere parts zusammensetzten möchte, muss ich ja immer mit strcpy() arbeiten. Mit C++ muss das doch aber eifacher gehen. Gibt es eine abkürzung wie in perl oder python (&quot;.&quot; und &quot;+&quot;) oder wie bei cout (&lt;&lt;), die einem die Arbeit mit Strings etwas vereinfacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049949</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Tue, 02 May 2006 20:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Tue, 02 May 2006 20:43:28 GMT]]></title><description><![CDATA[<p>Am einfachsten ist es, Du nimmst std::string. Dann kannst Du Strings mit + aneinander hängen.</p>
<pre><code class="language-cpp">#include &lt;string&gt;

    std::string a = &quot;Hello&quot;;
    std::string b = &quot;World&quot;;
    std::string c = a + &quot; &quot; + b;  // ergibt &quot;Hello World&quot;
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049953</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 02 May 2006 20:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Tue, 02 May 2006 20:45:04 GMT]]></title><description><![CDATA[<p>Guck dir mal std::string an:<br />
<a href="http://www.cppreference.com/cppstring/index.html" rel="nofollow">http://www.cppreference.com/cppstring/index.html</a><br />
Für diese sind auch die Operatoren + und += für die Konkatenation überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049954</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Tue, 02 May 2006 20:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Tue, 02 May 2006 21:17:12 GMT]]></title><description><![CDATA[<p>danke, auf die Idee, das die Operatoren überlagert wurden bin ich gar nicht gekommen. sry.</p>
<p>Aber mal eine andere Frage (hoffe die ist nicht genauso blöd): kann ich strings casten? hab schon alles probiert (auch in std::string). Es sollte doch eigentlich mit einem static_cast gehen, oder irre ich mich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049962</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Tue, 02 May 2006 21:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Tue, 02 May 2006 21:25:29 GMT]]></title><description><![CDATA[<p>std::string ist eine Klasse und eine Variable dieser kann mit einem char-Array oder einem anderen std::string initialisiert werden:</p>
<pre><code class="language-cpp">string s(&quot;Hallo&quot;);
string s2(s);
</code></pre>
<p>Wenn du das char-Array haben willst, kannst du dir einen const char* zurückliefern lassen von string:</p>
<pre><code class="language-cpp">string s(&quot;Hallo&quot;);
const char *cc = s.c_str();
</code></pre>
<p>Ansonsten, wie bereits gesagt, in die Referenz gucken, da findest du alles was du brauchst und auch einige Beispiele zu den Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049965</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Tue, 02 May 2006 21:25:29 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Tue, 02 May 2006 22:11:49 GMT]]></title><description><![CDATA[<p>Vellas schrieb:</p>
<blockquote>
<pre><code class="language-cpp">string s(&quot;Hallo&quot;);
const char *cc = s.c_str();
</code></pre>
</blockquote>
<p>Damit erzeugst du jetzt aber keinen neuen C-String mit dem Inhalt, sondern kopierst nur den Pointer, was auch noch gefährlich ist:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

int main() {
    using namespace std;
    string test(&quot;Hallo&quot;);
    const char* p = test.c_str();
    test.erase();
    test = &quot;viiiiiiiiieeeeeeeeeeeeeell zu lang&quot;;
    cout &lt;&lt; &quot;p:       &quot; &lt;&lt; static_cast&lt;void*&gt;(const_cast&lt;char*&gt;(p)) &lt;&lt; endl
         &lt;&lt; &quot;c_str(): &quot; &lt;&lt; static_cast&lt;void*&gt;(const_cast&lt;char*&gt;(test.c_str())) &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Ausgabe bei mir:</p>
<pre><code>p:       0x3e2514
c_str(): 0x3e2534
</code></pre>
<p>Du siehst, der Zeiger kann sich verändern. Deswegen eher so machen:</p>
<pre><code class="language-cpp">string s(&quot;Hallo Welt!&quot;);
char* p = new char[strlen(s.c_str()) + 1];
strcpy(p, s.c_str());
cout &lt;&lt; p &lt;&lt; endl;
delete[] p;
</code></pre>
<p>edit: Oder falls keine Kopie notwendig ist, immer c_str() aufrufen.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049976</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Tue, 02 May 2006 22:11:49 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 06:09:44 GMT]]></title><description><![CDATA[<p>Dein Beispielprogramm ist übrigens ein Fall von undefiniertem Verhalten - p ist an der Stelle überhaupt nicht mehr gültig, wo du es ausgeben willst (und &quot;cout&lt;&lt;p&quot; dürfte irgendwelchen Speichermüll ausgeben).</p>
<p>Übrigens hat std::string auch die Methode copy(), mit der du seine Daten (oder Teile davon) in einen eigenen char[]-Block kopieren kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050009</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 06:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 06:19:01 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Dein Beispielprogramm ist übrigens ein Fall von undefiniertem Verhalten - p ist an der Stelle überhaupt nicht mehr gültig, wo du es ausgeben willst (und &quot;cout&lt;&lt;p&quot; dürfte irgendwelchen Speichermüll ausgeben).</p>
</blockquote>
<p>Du meinst jetzt das zweite, oder? Aber warum ist p da nicht mehr gültig? Das versteh ich nicht ganz.</p>
<blockquote>
<p>Übrigens hat std::string auch die Methode copy(), mit der du seine Daten (oder Teile davon) in einen eigenen char[]-Block kopieren kannst.</p>
</blockquote>
<p>Cool danke! Kannte ich noch gar nicht.</p>
<pre><code class="language-cpp">char* p = new char[test.size() + 1];
    p[test.copy(p, test.size())] = 0;
    cout &lt;&lt; p &lt;&lt; endl;
    delete[] p;
</code></pre>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050016</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 03 May 2006 06:19:01 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 06:29:34 GMT]]></title><description><![CDATA[<p>joomoo schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Dein Beispielprogramm ist übrigens ein Fall von undefiniertem Verhalten - p ist an der Stelle überhaupt nicht mehr gültig, wo du es ausgeben willst (und &quot;cout&lt;&lt;p&quot; dürfte irgendwelchen Speichermüll ausgeben).</p>
</blockquote>
<p>Du meinst jetzt das zweite, oder? Aber warum ist p da nicht mehr gültig? Das versteh ich nicht ganz.</p>
</blockquote>
<p>Ich meinte an der Stelle, wo du die Adressen abfragst. Strings reorganisieren gelegentlich ihren internen Speicherbereich (indem sie einen größeren Block anfordern und ihre Daten dorthin umkopieren), und dabei werden alle <strong>Pointer</strong>, Referenzen und Iteratoren ungültig, die etwas mit dem String zu tun haben (dazu gehören auch Pointer, die du per c_str() bekommen hast).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050022</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 06:29:34 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 06:37:00 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>joomoo schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Dein Beispielprogramm ist übrigens ein Fall von undefiniertem Verhalten - p ist an der Stelle überhaupt nicht mehr gültig, wo du es ausgeben willst (und &quot;cout&lt;&lt;p&quot; dürfte irgendwelchen Speichermüll ausgeben).</p>
</blockquote>
<p>Du meinst jetzt das zweite, oder? Aber warum ist p da nicht mehr gültig? Das versteh ich nicht ganz.</p>
</blockquote>
<p>Ich meinte an der Stelle, wo du die Adressen abfragst. Strings reorganisieren gelegentlich ihren internen Speicherbereich (indem sie einen größeren Block anfordern und ihre Daten dorthin umkopieren), und dabei werden alle <strong>Pointer</strong>, Referenzen und Iteratoren ungültig, die etwas mit dem String zu tun haben (dazu gehören auch Pointer, die du per c_str() bekommen hast).</p>
</blockquote>
<p>Ja genau das wollte ich Vellas doch zeigen?! <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>
<p>joomoo schrieb:</p>
<blockquote>
<p>Du siehst, der Zeiger kann sich verändern.</p>
</blockquote>
<p>Ich hab den Zeiger ja nur angezeigt und nicht dereferenziert, also noch nichts gefährliches. Damit wollte ich halt genau Zeigen, dass er ungültig wird.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050026</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 03 May 2006 06:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 09:20:43 GMT]]></title><description><![CDATA[<p>danke für die ganzen antworten. Leider ist meine Frage immer noch nicht beantwortet. Ich wollte nicht einen String zu etwas anderen casten (hatte dafür die c_str funktion schon gesehen) sondern ein short zu einem string. Habe es folgendermaßen probiert:</p>
<pre><code class="language-cpp">short a = 5;
	string myString = string(static_cast&lt;char&gt;(a));
</code></pre>
<p>kann mir jemand sagen, was daran falsch ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050127</guid><dc:creator><![CDATA[MaxDemian]]></dc:creator><pubDate>Wed, 03 May 2006 09:20:43 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 09:22:27 GMT]]></title><description><![CDATA[<p>FAQ: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050130</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 03 May 2006 09:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 11:33:54 GMT]]></title><description><![CDATA[<p>MaxDemian schrieb:</p>
<blockquote>
<p>danke für die ganzen antworten. Leider ist meine Frage immer noch nicht beantwortet. Ich wollte nicht einen String zu etwas anderen casten (hatte dafür die c_str funktion schon gesehen) sondern ein short zu einem string. Habe es folgendermaßen probiert:</p>
<pre><code class="language-cpp">short a = 5;
	string myString = string(static_cast&lt;char&gt;(a));
</code></pre>
<p>kann mir jemand sagen, was daran falsch ist?</p>
</blockquote>
<p>Mit static_cast geht das nicht. Entweder du machst es so wie in der FAQ oder mit dem lexical_cast aus der boost C++ Library, der kann sowas:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;boost/lexical_cast.hpp&gt;

int main() {
    using namespace std;
    using boost::lexical_cast;
    short a = 5;
    string b = lexical_cast&lt;string&gt;(a);
    cout &lt;&lt; b;
    return 0;
}
</code></pre>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050211</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 03 May 2006 11:33:54 GMT</pubDate></item><item><title><![CDATA[Reply to Strings addition abkürtzen on Wed, 03 May 2006 19:50:37 GMT]]></title><description><![CDATA[<p>joomoo schrieb:</p>
<blockquote>
<p>edit: Oder falls keine Kopie notwendig ist, immer c_str() aufrufen.</p>
</blockquote>
<p>Genau davon bin ich eigentlich ausgegangen. Hatte irgendwie bissl vorausgesetzt, dass man darauf kommt, dass es sich dabei nicht um eine Kopie handelt. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1050552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050552</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 03 May 2006 19:50:37 GMT</pubDate></item></channel></rss>