Auch std::string zu const char *



  • Hi Leute ich hab ein ähnliches problem wie noha ich will eine datei über das internet versenden jedoch geht das nicht weil vc++ 2005 mir folgenden fehler bringt

    c:\dokumente und einstellungen\albert\eigene dateien\programmieren\server + keylogger 2\server2\server2.cpp(186) : error C2664: 'send': Konvertierung des Parameters 2 von 'std::string' in 'const char *' nicht möglich
    Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden

    std::string TempString = "";
    //in TempString wird geschrieben!!!
    ...
    rc=send(Socket,TempString,strlen(TempString),0);
    

    send() erwartet jedoch folgende parameter:

    int send(
    SOCKET s,
    const char* buf,
    int len,
    int flags
    );
    wie kann ich also string in const char * umwandeln?
    Albert



  • Hi,

    rc=send(Socket,TempString.c_str (),strlen(TempString),0);
    

    Immer c_str () anhängen, das wandelt einen string in const char * um 😉

    MfG mikey.



  • std::string string_temp; // wird automatisch mit "" initialisiert ;)
    // ...
    rc = send(hSocket, string_temp.c_str(), string_temp.length(), 0);
    

    und length gibt es da auch noch ...



  • Joah, aber length, der Compiler ist da sehr penibel, was Rechtschreibung angeht 😉



  • OK danke das funktioniert
    ich hab noch ein Problemm:

    c:\dokumente und einstellungen ... \program.cpp(62) : warning C4996: 'strcpy' wurde als veraltet deklariert
    Meldung: "This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."
    c:\dokumente und einstellungen ... \program.cpp(63) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'int', Datenverlust möglich

    strcpy(buf2,"Fehler: startWinsock, fehler code:");
    	rc=send(connectedSocket,buf2,strlen(buf2),0);
    

    diese warnungen kommen bei meinem programm jetzt bestimmt 10 mal
    Wie kann ich diese beheben?



  • std::string item("Fehler: startWinsock, fehler code:");
    rc=send(connectedSocket, item.c_str(), item.length(), 0);
    

    ?!?!??!



  • albertk13 schrieb:

    Wie kann ich diese beheben?

    #if defined(_MSC_VER) && (_MSC_VER >= 1400)
    #ifndef _SCL_SECURE_NO_DEPRECATE
    #define _SCL_SECURE_NO_DEPRECATE	// disable deprecated warnings (C4996) for "unsafe" STL usage (e.g. use of unchecked iterators)
    #endif
    #ifndef _CRT_SECURE_NO_DEPRECATE
    #define _CRT_SECURE_NO_DEPRECATE	// disable deprecated warnings (C4996) for "unsafe" CRT functions
    #endif
    #endif // _MSC_VER >= 1400
    


  • (D)Evil schrieb:

    std::string item("Fehler: startWinsock, fehler code:");
    rc=send(connectedSocket, item.c_str(), item.length(), 0);
    

    ?!?!??!

    Jo, das ist besser als "no keyboard detected. press F1 to continue." 😃


Anmelden zum Antworten