<?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[char in string konvertieren (Socket Programmierung, erhaltene Daten)]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>habe folgenden Code geschrieben:</p>
<pre><code class="language-cpp">void Connection::rD(){
 char buf [2048];
 int bytes;

 bytes = recv(sock,buf,sizeof(buf)-1,0);

 if (bytes==-1)
 {
   perror (&quot;Error&quot;);
 }

 buf [bytes] = '\0';
 printf(&quot;Erhalten: \&quot;%s\&quot;\n&quot;,buf);
}
</code></pre>
<p>Ich habe ein Problem mit den Stuerzeichen. Wie kann ich es bewerkstelligen, dass ich die Daten in einen String speichere ?</p>
<p>(Weiss es klingt ziemlich banal, aber habe schon mehrere Ansätze veruscht ohne Erfolg deshalb wollte ich mal dirket hier rein posten!)</p>
<p>Ich bedanke mich im vorraus für eure netten Ansätze.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277229/char-in-string-konvertieren-socket-programmierung-erhaltene-daten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 00:40:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277229.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Nov 2010 07:37:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 07:37:50 GMT]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>habe folgenden Code geschrieben:</p>
<pre><code class="language-cpp">void Connection::rD(){
 char buf [2048];
 int bytes;

 bytes = recv(sock,buf,sizeof(buf)-1,0);

 if (bytes==-1)
 {
   perror (&quot;Error&quot;);
 }

 buf [bytes] = '\0';
 printf(&quot;Erhalten: \&quot;%s\&quot;\n&quot;,buf);
}
</code></pre>
<p>Ich habe ein Problem mit den Stuerzeichen. Wie kann ich es bewerkstelligen, dass ich die Daten in einen String speichere ?</p>
<p>(Weiss es klingt ziemlich banal, aber habe schon mehrere Ansätze veruscht ohne Erfolg deshalb wollte ich mal dirket hier rein posten!)</p>
<p>Ich bedanke mich im vorraus für eure netten Ansätze.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980587</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 07:37:50 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 07:50:04 GMT]]></title><description><![CDATA[<p>Suchst du dies?</p>
<pre><code class="language-cpp">std::string str(buf, buf+bytes-1);
</code></pre>
<p>Ich werde aus deiner Frage nicht so 100% schlau. Machst du überhaupt C++ und ist es das was du mit String meintest? Warum nutzt du es dann nicht gleich? Und was soll diese Nullterminierung, wenn buf doch anscheinend Binärdaten enthält und keine Zeichenkette (du schreibst ja, du hättest Probleme mit Steuerzeichen)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980593</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 15 Nov 2010 07:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 08:07:55 GMT]]></title><description><![CDATA[<p>danke, für deine Rückmeldung...</p>
<p>-Ich mache eigentlich C++ nur meine Socketprogrammierung basiert auf C.</p>
<p>-Ich habe es mal selbst probiert was nicht geklappt hatte und dann hatte ich es mit der Nullterminierung, welches ich von einem Tutorial mir abgeschaut habe. Leider hat mir dies nicht mit dem String geholfen.</p>
<p>-Wie wäre es denn besser gewesen ? Kannst du es bitte in mein Code implementieren ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980598</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 08:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 09:29:51 GMT]]></title><description><![CDATA[<p>Gast 1233 schrieb:</p>
<blockquote>
<p>-Wie wäre es denn besser gewesen ? Kannst du es bitte in mein Code implementieren ?</p>
</blockquote>
<p>Naja, ich weiß nicht genau, was es machen soll, daher ist es ein bisschen schwierig, es besser zu machen <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="🙂"
    /> . Eine schlampige Übersetzung deines Codes sieht so aus:</p>
<pre><code class="language-cpp">void Connection::rD(){
 string buf(2048,0); // Vom vermutlichen Verwendungszweck her eigentlich eher vector&lt;char&gt;, aber string ist besser für spätere Ausgabe

 int bytes = recv(sock,&amp;buf[0],buf.size(), -1,0);

 if (bytes==-1)
 {
   perror (&quot;Error&quot;);
 }

 cout &lt;&lt; &quot;Erhalten: &quot; &lt;&lt; buf &lt;&lt; &quot;\n&quot;;
}
</code></pre>
<p>std::string kann natürlich nicht auf magische Weise Steuerzeichen ausgeben, aber immerhin bekommst du beim Ausgeben keine Probleme mit eventuellen Nullzeichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980635</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 15 Nov 2010 09:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 10:05:02 GMT]]></title><description><![CDATA[<p>Vorerst vielen Dank für deine Bemühung <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>Wenn ich das jetzt wie d es gemacht habe bei mir Implementiere, habe ich immernoch das selbe Problem. Die UCF-8 Zeichen werden als ganz seltsame hyroglyphen dargestellt! <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>Es ging mir nur drumm die steurzeichen (bzw. punkte die in hex angegeben sind) auch auszugeben! Das klappt leieder nicht :(:(</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980652</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 10:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 10:17:08 GMT]]></title><description><![CDATA[<p>Meines Wissens tut std::string nicht garantieren, dass der Speicher am Stück ist (somit muss &amp;str[0] nicht unbedingt funktioniert im Sinne von Zeiger auf Stück Speicher).</p>
<p>Das garantiert std::vector&lt;..&gt; welcher dafür benutzt werden sollte.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980655</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 15 Nov 2010 10:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 10:38:18 GMT]]></title><description><![CDATA[<p>Hallo Simon, danke für deine Beteiligung...</p>
<p>Wie würde ich es in Vector implementieren ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980663</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 10:38:18 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 11:00:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">vector&lt;char&gt; buf(2048);
...
cout &lt;&lt; &quot;Erhalten: &quot; &lt;&lt; &amp;buf[0] &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>Wobei das Problem hier wieder das terminierende Zeichen ist. Du müsstest die Daten eigentlich erst in eine anzeigbare Form bringen.</p>
<p>Ist natürlich richtig der Adressoperator muss hier angewendet werden. Für dein Problem ist es aber nicht weiter von belang die Daten in ein String stopfen zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980665</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Mon, 15 Nov 2010 11:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 10:49:11 GMT]]></title><description><![CDATA[<p>std::string(buf.begin(), buf.begin() + numerOfReceivedBytes);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980668</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 15 Nov 2010 10:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 11:08:22 GMT]]></title><description><![CDATA[<p>Hallo Nick,</p>
<p>mit deiner Lösung besthet das Problem weiterhin, bezüglich der Anzeige...<br />
Was ich vorallem seltsam finde, ich habe beim Aufruf eine while Schleife, doch nach 5-10 aufrufen der Recieve Verbindung bricht sie ab! Kann es sein, dass die Variable buf einfach volläuft ?</p>
<p>theata wie würde ich es denn in mein Code implementieren genau was du meinst ? Verstehe gerade den zusammenhang nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980677</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 11:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 11:25:45 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/797">@nick</a>: bzw. die Kommunikation zwischen Sever besteht noch (laut wireshark, kein Fin gesendet) und die Konsole läuft auch noch! Nur Es macht keine Ausgabe mehr bezüglich der empfangenen Daten und sendet kein erneuten Request mehr, es stockt quasi nach dem 5-10 Aufruf (der anzahl der Aufrufe variiert auch seltsamerweise)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980682</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 11:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 12:18:26 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/797">@nick</a>: Das Problem mit der Variable vollaufen hat sich gelöst... habe die größe von buf auf (512) reduziert und es funktioniert jetzt, weshalb auch immer! Das Problem mit dem steuerzeichen habe ich immer noch!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980700</guid><dc:creator><![CDATA[Gast 3322]]></dc:creator><pubDate>Mon, 15 Nov 2010 12:18:26 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 13:07:55 GMT]]></title><description><![CDATA[<p>Problem wieder gelöst...</p>
<p>Nur eine letzte frage habe ich noch! Und zwar was bewirkt der Parameter hinter dem Vektor, ob ich den nun auf 512,1024 oder nur 64 stelle ?</p>
<p>Habe mit wireshark gemerkt, dass ich viel mehr Pakete schaffe um so niedriger ich den Parameter wähle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980731</guid><dc:creator><![CDATA[Gast 1233]]></dc:creator><pubDate>Mon, 15 Nov 2010 13:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 13:12:32 GMT]]></title><description><![CDATA[<p>Gast 1233 schrieb:</p>
<blockquote>
<p>Nur eine letzte frage habe ich noch! Und zwar was bewirkt der Parameter hinter dem Vektor, ob ich den nun auf 512,1024 oder nur 64 stelle ?</p>
</blockquote>
<p>Eine C++-Referenz sollte man immer blickbereit haben:<br />
<a href="http://www.cplusplus.com/reference/stl/vector/vector/" rel="nofollow">http://www.cplusplus.com/reference/stl/vector/vector/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980732</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 15 Nov 2010 13:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to char in string konvertieren (Socket Programmierung, erhaltene Daten) on Mon, 15 Nov 2010 13:24:26 GMT]]></title><description><![CDATA[<p>Man sollte übrigens vorher wissen, wieviel Daten man lesen möchte und nicht einfach irgendwas lesen. Ob Daten zum Lesen vorhanden sind, kannst du mit <a href="http://www.manpagez.com/man/2/select/" rel="nofollow">select</a> ermitteln. Wenn Daten zum Lesen vorhanden sind, du aber 0 Bytes liest, dann heißt das, dass die Verbindung beendet wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980738</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Mon, 15 Nov 2010 13:24:26 GMT</pubDate></item></channel></rss>