C++ Text + Funktion?

  • Hallo Community,


    ja langsam nerve ich mit meinen dauernden C++ Fragen ...
    und zwar wollte ich gerne einen Username aus einer Textbox mit einem schon vorgegebenen Text an einen Socket Senden.


    Beispiel wie ich es gemacht hätte (Geht aber selbstverständlich nicht)

    Code
    answer = send(sConnect, "ACCEPT:"+username, 8, NULL);


    sollte im Beispiel sowas senden: ACCEPT:Maximilian

  • Öhm.
    Bei C++ ganz normal zur Textausgabe ginge es so:


    Code
    cout << "ACCEPT:" << username << endl;


    Möglicherweis funktioniert das auch in deiner Funktion?

    Wer ist der Mensch hinter der Uniform? Ist euch das bekannt?
    Es ist der selbe der noch eben in Zivil neben euch stand.
    Warum wird er gehasst und so selten respektiert?
    Warum ist er derjenige der seinen Hals für euch riskiert?
    Trägt der Bulle eine Weste, das hat er früher nie gemacht,
    die Zeiten haben sich geändert und jeder Dienst ist ein Kampf!
    Warum gibt’s das SEK und warum sind sie so brutal?
    Und wieso hat wieder einer mit seinem Leben bezahlt?

  • Ja, send() ist aber keine Standard C++ Funktion, (nach kurzem Googlen) gehört sie anscheinend zu dem Visual C++ Teil von Microsoft.


    Wenn man sich die Funktionsbeschreibung http://msdn.microsoft.com/en-u…s740149%28v=vs.85%29.aspx ansieht, sieht man, dass dei Funktion einen char Pointer erwartet.
    Ich weiß nicht, inwiefern du dich in C++ auskennst, aber dir sollte bewusst sein, dass sich in C und C++ Arrays und Strings nicht so einfach handhaben lassen, wie in z.b. Java.
    In C übergibt man nicht "einfach so" den String, sondern einen Pointer darauf.
    In C++ sind Strings schon einfacher durch std::string.
    Nun will send() aber keinen std::string, sondern einen String in C Stil (also Pointer).
    std::string gibt dir aber dir Möglichkeit, ihn einfach als C String zu übergeben (std::string.c_str()).


    Demnach müsstest du das ungefähr so machen

    C
    std::string text("zu sendender Text");
    send(sConnect, text.c_str(), text.length(),0);