<?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[winapi - send() mit std::string im Argument]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich probiere schon seit geraumer Zeit unter Windows XP mit MinGW mittels send() Strings über das Netz zu verschicken.<br />
Leider ist das arbeiten mit cstrings äußerst lästig (und in vielen Postings wird auch davon abgeraten) aber ich schaffe einfach nicht:</p>
<p>a) send() dazu zu bringen <a href="std::string" rel="nofollow">std::string</a> als Parameter zu akzeptieren<br />
b) einen guten cast von std::string nach char* durchzuführen</p>
<p>So etwas möchte ich verwirklichen;</p>
<pre><code class="language-cpp">string sendemich=&quot;Hallo Welt\n\n\n3 Zeilen weiter&quot;;
  rs=send(socket,sendemich,(int)strlen(sendemich),0);
</code></pre>
<p>bishermache ich es so:</p>
<pre><code class="language-cpp">const char *p;
	temp=&quot;sendme&quot;;
	p=temp.c_str();
	strcpy(buf,p);
        send(s,buf,strlen(buf),0);
</code></pre>
<p>Das ist aber unsauber und manchmal(zwar selten aber...) kommt Schrott beim Gegenüber an...</p>
<p>Dei Fehlermeldung beim compilieren mit String als Parameter:</p>
<pre><code>main.cpp: In function `int main()':
main.cpp:176: error: cannot convert `std::string' to `const char*' for argument
`1' to `size_t strlen(const char*)'
main.cpp:176: error: cannot convert `std::string' to `const char*' for argument
`2' to `int send(unsigned int, const char*, int, int)'
</code></pre>
<p>Ich schaffe es alleine einfach nicht. <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="😞"
    /><br />
Weiss jemand Rat? Auch Codeschnipsel würden zum Verständnis beitragen...</p>
<p>Gruss<br />
Robin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144615/winapi-send-mit-std-string-im-argument</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 17:46:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144615.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Apr 2006 18:41:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 18:41:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich probiere schon seit geraumer Zeit unter Windows XP mit MinGW mittels send() Strings über das Netz zu verschicken.<br />
Leider ist das arbeiten mit cstrings äußerst lästig (und in vielen Postings wird auch davon abgeraten) aber ich schaffe einfach nicht:</p>
<p>a) send() dazu zu bringen <a href="std::string" rel="nofollow">std::string</a> als Parameter zu akzeptieren<br />
b) einen guten cast von std::string nach char* durchzuführen</p>
<p>So etwas möchte ich verwirklichen;</p>
<pre><code class="language-cpp">string sendemich=&quot;Hallo Welt\n\n\n3 Zeilen weiter&quot;;
  rs=send(socket,sendemich,(int)strlen(sendemich),0);
</code></pre>
<p>bishermache ich es so:</p>
<pre><code class="language-cpp">const char *p;
	temp=&quot;sendme&quot;;
	p=temp.c_str();
	strcpy(buf,p);
        send(s,buf,strlen(buf),0);
</code></pre>
<p>Das ist aber unsauber und manchmal(zwar selten aber...) kommt Schrott beim Gegenüber an...</p>
<p>Dei Fehlermeldung beim compilieren mit String als Parameter:</p>
<pre><code>main.cpp: In function `int main()':
main.cpp:176: error: cannot convert `std::string' to `const char*' for argument
`1' to `size_t strlen(const char*)'
main.cpp:176: error: cannot convert `std::string' to `const char*' for argument
`2' to `int send(unsigned int, const char*, int, int)'
</code></pre>
<p>Ich schaffe es alleine einfach nicht. <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="😞"
    /><br />
Weiss jemand Rat? Auch Codeschnipsel würden zum Verständnis beitragen...</p>
<p>Gruss<br />
Robin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040835</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Wed, 19 Apr 2006 18:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 18:48:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::string str;
  str = &quot;Hallo Welt&quot;;
  send(s, str.c_str(), (int) str.size(), 0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1040843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040843</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 19 Apr 2006 18:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 18:52:29 GMT]]></title><description><![CDATA[<p>Setz unter deine Includierungen:</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>Danach nimm überall das std:: weg, und probier es nocheinmal. Wenn es nicht helfen sollte, dann weiß ich nichts mehr.</p>
<p>Mfg Ominion</p>
<p>[EDIT]Jochen war schneller als ich.[/EDIT]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040845</guid><dc:creator><![CDATA[Ominion]]></dc:creator><pubDate>Wed, 19 Apr 2006 18:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 19:04:38 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::string str;
  str = &quot;Hallo Welt&quot;;
  send(s, str.c_str(), (int) str.size(), 0);
</code></pre>
</blockquote>
<p>Ja, das war eines der ersten Dinge, die ich versucht hab. Das war heute morgen gegen 10 Uhr oder so... So lang bin ich schon dran....<br />
Ich weiss nciht mehr, wieso das nicht ging, aber ich probiers gerne nochmal..</p>
<p>Ominion, ich hab das std:: nur hier im Codeschnipsel stehen. In der main bin ich im std-namespace...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040854</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Wed, 19 Apr 2006 19:04:38 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 19:15:56 GMT]]></title><description><![CDATA[<p>Hmm, das gibts ja gar nicht - jetzt klappts.</p>
<p>Ich trau der ganzen Sache zwar noch nicht so ganz, aber ich werde mal meinen ganzen Code umschreiben...</p>
<p>Jetzt traue ich mich fast gar nicht zu fragen.....</p>
<p>Der Umgekehrte Weg wäre dann beim recv() so wie hier?</p>
<pre><code class="language-cpp">s=verbundener Socket
char buf[4096];
rc=recv(s,buf,1024,0);
string str((LPCTSTR)buf);
</code></pre>
<p>Oder denke ich hier in eine falsche Richtung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040859</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Wed, 19 Apr 2006 19:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 19:21:15 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Der Umgekehrte Weg wäre dann beim recv() so wie hier?</p>
<pre><code class="language-cpp">s=verbundener Socket
char buf[4096];
rc=recv(s,buf,1024,0);
string str((LPCTSTR)buf);
</code></pre>
</blockquote>
<p>Du solltest casts immer vermeiden, wenn sie nicht wirklich benötigt werden!<br />
also</p>
<pre><code class="language-cpp">string str(buf);
</code></pre>
<p>PS: An dem Beispiel siehst Du jetzt auch schon das Problem (hoffentlich)! Du weisst im voraus nicht, wie lange der String ist... deswegen würde ich Dir Raten zuerst die länge des Strings zu senden (4 byte) und dann den String. Somit wird das empfangen einfacher...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040865</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 19 Apr 2006 19:21:15 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Wed, 19 Apr 2006 19:59:03 GMT]]></title><description><![CDATA[<p>es is gut möglich dass du die Klammern beim Obj.c_str() vergessen hast, is mir mal passiert, dann kommt da nur Schrott raus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1040902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040902</guid><dc:creator><![CDATA[kannsein....]]></dc:creator><pubDate>Wed, 19 Apr 2006 19:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to winapi - send() mit std::string im Argument on Thu, 20 Apr 2006 04:41:27 GMT]]></title><description><![CDATA[<p>Ach Herrjeh - das koennte sogar sein.<br />
Da bin ich um ein paar Jährchen gealtert - nur wegen sowas....<br />
Und die ganze Arbeit den Code nach char[] umschreiben und und jetzt wieder alles Rückgängig....<br />
*seufz*</p>
<p>Naja, jetzt gehts schneller, da ich größtenteils nur auskommentiert hab.</p>
<p>Vielen Dank an alle!<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041026</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Thu, 20 Apr 2006 04:41:27 GMT</pubDate></item></channel></rss>