<?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[kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings...]]></title><description><![CDATA[<p>pointer können ja verwendet werden, um strings zu speichern und können dann auch verwendet werden, um den abgespeicherten string per cout auszugeben...</p>
<p>folgender code funktioniert bei mir:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
char *ptr;
ptr=&quot;hallo&quot;;
cout &lt;&lt; ptr &lt;&lt; endl;

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>weshalb ist es aber nicht möglich, per cin dem pointer einen string zuzuweisen? folgendes funktioniert nämlich nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
char *ptr;
cin &gt;&gt; ptr;
cout &lt;&lt; ptr &lt;&lt; endl;

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>das programm hängt sich dabei immer mit einem &quot;windows-fehlerbericht-senden&quot; fehlerfenster auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204108/kleine-frage-verwirrung-zur-verwendung-von-pointern-zum-umgang-mit-strings</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 07:57:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204108.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Jan 2008 11:20:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 11:20:38 GMT]]></title><description><![CDATA[<p>pointer können ja verwendet werden, um strings zu speichern und können dann auch verwendet werden, um den abgespeicherten string per cout auszugeben...</p>
<p>folgender code funktioniert bei mir:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
char *ptr;
ptr=&quot;hallo&quot;;
cout &lt;&lt; ptr &lt;&lt; endl;

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>weshalb ist es aber nicht möglich, per cin dem pointer einen string zuzuweisen? folgendes funktioniert nämlich nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
char *ptr;
cin &gt;&gt; ptr;
cout &lt;&lt; ptr &lt;&lt; endl;

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>das programm hängt sich dabei immer mit einem &quot;windows-fehlerbericht-senden&quot; fehlerfenster auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446203</guid><dc:creator><![CDATA[MrWulf]]></dc:creator><pubDate>Wed, 30 Jan 2008 11:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 11:48:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mach's richtig:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
string str;
cin &gt;&gt; str;
cout &lt;&lt; str &lt;&lt; endl;

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>Dann funktioniert's auch mit dem Einlesen. <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="😃"
    /><br />
Was Dir bei Deinem Beispiel fehlt (und was Du für das Handling von Zeichenketten auch gar nicht brauchst), ist das Speichermanagement.</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>P.S.: Zum Verständnis: &quot;Hallo&quot; lässt dem Compiler &quot;readonly-Speicher&quot; anlegen und ptr zeigt darauf. &quot;cin &gt;&gt; ptr&quot; wird nun versuchen, dahin zu schreiben, wohin ptr zeigt ... und da das verboten ist, gibt's &quot;undefiniertes Verhalten&quot; (was alles bedeuten kann von &quot;Tut's trotzdem irgendwie manchmal&quot; bis hin zu &quot;Rechnerplatine schmort durch&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446206</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 30 Jan 2008 11:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 11:30:00 GMT]]></title><description><![CDATA[<p>MrWulf schrieb:</p>
<blockquote>
<p>pointer können ja verwendet werden, um strings zu speichern und können dann auch verwendet werden, um den abgespeicherten string per cout auszugeben...</p>
</blockquote>
<p>Aber nur wenn du Speicher allozierst.</p>
<p>Besser: std::string</p>
<p>MrWulf schrieb:</p>
<blockquote>
<p>folgender code funktioniert bei mir:</p>
</blockquote>
<p>Leider... Du weist dem Zeiger ein temporären Wert zu. Es könnte dir genausogut um die Ohren fliegen</p>
<p>MrWulf schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
char *ptr;
ptr=&quot;hallo&quot;;
cout &lt;&lt; ptr &lt;&lt; endl;
    
system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
</blockquote>
<p>NIEMALS: Zeiger auf nicht allozierten Speicher verwenden<br />
MÖGLICHTS NIEMALS: system(&quot;PAUSE&quot;), hier steht in der Konsolen-FAQ eine bessere (C++) und portablere Lösung.</p>
<p>Die C++ Lösung: Verwende std::string<br />
Die restlichen Lösungen kannst du hier finden wenn du dir auch nur die ersten 20 Nachrichten durchsuchst... (Thema char[], new/delete, strcpy...).</p>
<p>Der Rest ergibt sich daraus.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446209</guid><dc:creator><![CDATA[Hinweis]]></dc:creator><pubDate>Wed, 30 Jan 2008 11:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 11:46:27 GMT]]></title><description><![CDATA[<p>Hinweis schrieb:</p>
<blockquote>
<p>... Du weist dem Zeiger ein temporären Wert zu....</p>
</blockquote>
<p>Hmmmmm, ich denke, dass das nicht stimmt. &quot;Hinweis&quot; ist ein Stringliteral, das schon im Speicher liegt (und damit &quot;alloziert&quot; ist) ... aber eben in Speicher, der nicht beschreibbar ist.<br />
Ich würde sogar sagen, dass dieser Speicherbereich weniger &quot;temporär&quot; ist als alles Andere, was alloziert ist (wird oftmals schon mit dem Programmcode in den Speicher geladen) <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446222</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 30 Jan 2008 11:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 12:02:27 GMT]]></title><description><![CDATA[<p>ok, danke für die schnellen antworten, dass ich das mit dem string-objekt lösen kann weiss ich, ich wollte einfach mal wissen, wieso es nicht auch mit pointern klappt <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>nun zu meinem eigentlichen problem:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

    struct candybar{
           string bezeichnung;
           double weight;
           int calories;
    }object1;

void function(candybar a, string name=&quot;Millenium Munch&quot;, double gewicht=2.85, int kalorien=350);
void function2(candybar b);

int main()
{
candybar &amp; j=object1;
function(j);

candybar &amp; i=object1;
function2(i);

system(&quot;PAUSE&quot;);
 return 0;   
}

void function(candybar a, string name, double gewicht, int kalorien){
     cout &lt;&lt; &quot;namen der süssigkeit eingeben: &quot; &lt;&lt; endl;
     cin &gt;&gt; name;
     a.bezeichnung=name;
     cout &lt;&lt; &quot;gewicht eingeben: &quot; &lt;&lt; endl;
     cin &gt;&gt; gewicht;
     a.weight=gewicht;
     cout &lt;&lt; &quot;kalorien eingeben: &quot; &lt;&lt; endl;
     cin &gt;&gt; kalorien;
     a.calories=kalorien;
     }
void function2(candybar a){
     cout &lt;&lt; a.bezeichnung &lt;&lt; endl &lt;&lt; a.weight &lt;&lt; endl &lt;&lt; a.calories &lt;&lt; endl;
     }
</code></pre>
<p>das programm schafft es leider nicht, dem string &quot;bezeichnung&quot; über die referenz den eingegebenen string zuzuweisen, mir leuchtet jedoch nicht ein warum nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446231</guid><dc:creator><![CDATA[MrWulf]]></dc:creator><pubDate>Wed, 30 Jan 2008 12:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 12:07:15 GMT]]></title><description><![CDATA[<p>Musst &quot;candybar&quot; auch als Referenz übergeben.</p>
<pre><code class="language-cpp">void function(candybar &amp;a){
     cout &lt;&lt; &quot;namen der süssigkeit eingeben: &quot; &lt;&lt; endl;
     cin &gt;&gt; a.bezeichnung;
     cout &lt;&lt; &quot;gewicht eingeben: &quot; &lt;&lt; endl;
     cin &gt;&gt; a.weight;
     cout &lt;&lt; &quot;kalorien eingeben: &quot; &lt;&lt; endl;
     cin &gt;&gt; a.calories;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1446236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446236</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 30 Jan 2008 12:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 12:08:56 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nicht der Aufrufer entscheidet, ob in seinen Parameter etwas geschrieben wird, sondern die Funktion.</p>
<p>MrWulf schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">...
void function(candybar a, string name=&quot;Millenium Munch&quot;, double gewicht=2.85, int kalorien=350);
void function2(candybar b);
...
</code></pre>
<p>...</p>
</blockquote>
<p>Deine Funktionen nehmen jeweils <em>Kopien von Objekten</em> entgegen. HIER sollten Referenzen stehen : <code>function(candybar&amp; a, string&amp; name...</code> ) - jedenfalls für die Parameter, die Du in der Funktion ändern willst.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446238</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 30 Jan 2008 12:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Frage&#x2F;Verwirrung zur Verwendung von Pointern zum Umgang mit Strings... on Wed, 30 Jan 2008 12:25:40 GMT]]></title><description><![CDATA[<p>ok, funzt jetzt, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446248</guid><dc:creator><![CDATA[MrWulf]]></dc:creator><pubDate>Wed, 30 Jan 2008 12:25:40 GMT</pubDate></item></channel></rss>