cannot convert parameter 1 from 'class CString' to 'unsigned short'



  • Hi
    ich muss an die zeile:

    addr.sin_port=htons(cs_port);
    

    dem htons ein CString übergeben, es erwartet aber laut Hilfe einen u-short und ich weis nicht mehr weiter wie ich das konvertieren kann. Habe schon im Internet nach der fehlermeldung gesucht und einige Konvertierungen probiert, das hat aber nicht gefunzt. Ich arbeite in einer unicode umgebung, das wär vllt. noch wichtig. Kann mir jemand bitte helfen?
    Danke im Voraus 🙂
    Basti



  • Was steht denn in deinem String drin?

    (PS: htons() erwartet keinen String, sondern eine Ganzzahl - wie du die bekommen kannst, erfährst du in der C++ FAQ (unter "Einmal String nach Zahl und zurück"))



  • in meinem String (CString) steht nur "1100" drinne, und das muss ich eben an htons() übergeben.
    //edit: atoi(cs_port) ergibt leider auch nur
    cannot convert parameter 1 from 'class CString' to 'const char *'

    //edit2:
    hab die Zeile nun so abgeändert:

    addr.sin_port=htons(atoi(T2A(cs_port)));
    

    Er hat es soweit compiliert, ist das auch logisch in Ordnung, oder kann es da zu Datenverlust und Komplikatiopnen kommen?
    Gruß Basti



  • Es sieht zumindest in Ordnung aus - aber anstatt den String extra vor der Umwandlung nach char* zu übersetzen, würde ich lieber die Unicode-Version von atoi() verwenden:

    addr.sin_por = htons(_ttoi(cs_port));
    


  • danke sehr, hat zwar mit beidem funktioniert, aber endlich verbindet sich mein Programm 🙂
    Vielen Dank
    Basti


Log in to reply