problem mit typumwandlungen



  • hi Leute,

    kennt jemand nen einfaches tutorial zum thema typumwandlungen,
    ich raff die irgendwie nich. ständig will eine funktion nen anderen typen.

    die eine will nen "string" die andere nen "const char*".
    ohne typumwandlungen zu beherrschen bekommt man wohl kein vernünftiges
    programm hin:/

    danke schonmal



  • Hi!

    In dem fall tut es ein einfaches : .c_str();

    void foo( const char *str )
    {
      std::cout << str << std::endl;
    }
    
    //...
    
    std::string bar( "hallo welt" );
    foo( bar.c_str() );
    //...
    

    Ansonsten stehen dir z.T. die C++ Casts zur verfügung:

    static_cast
    const_cast
    dynamic_cast
    reinterpret_cast
    

    grüße



  • mhh c_str() hatte ich benutzt, da kam nen c++ error fenster,
    glaub irgendwas mit assert. nun gehts, alles sehr seltsam.

    muss darüber wohl noch viel mehr lesen:)

    danke



  • vielleicht will die von dir mit

    string sonstwas = "sonstwas";
    function( sonstwas.c_str( ) );
    

    aufgerufene Funktion den Speicher des strings verändern? Da würde IHMO ein ASSERT fehlschlagen, da c_str( ) einen Zeiger auf const liefert.

    Greetz, Swordfish



  • Warum sollte es da ne assertion zuschlagen? Da müßte doch ein Compilerfehler kommen, wenn jemand versucht ne Funktion, die nen char* will mit nem const char* aufzurufen.



  • tjo, ka aber da kam fenster von c++, wollte ne datei anlegen.
    stand da abbrechen wieholen und abbrechen, und was von assert und
    das ich mir was über den compiler glaub durchlesen sollte.

    aber danke an euch, jetzt funktioniert alles wie es soll.

    jetzt fehlt mir noch ne funktion mit der ich die anzahl der
    laufwerke ermitteln kann, das man sich aussuchen kann, wo
    pfad und datei erstellt werden soll.

    weiss nur nicht wo diese funktionen drinstecken, vielleicht auch
    in der shellapi?



  • adonis schrieb:

    jetzt fehlt mir noch ne funktion mit der ich die anzahl der
    laufwerke ermitteln kann, das man sich aussuchen kann, wo
    pfad und datei erstellt werden soll.

    In Standard-C++ wirst du solche Funktionen nicht finden. Hier bist du auf die Hilfe deines BS angewiesen.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vielleicht hilft dir
    ➡ GetSaveFileName( )
    oder
    ➡ FindFirstVolume( )

    Greetz, Swordfish



  • Mit der ShellAPI geht's z.B. mit

    SHBrowseForFolder()
    

    und

    SHGetPathFromIDList()
    

    Mfg, North.



  • Jester schrieb:

    Warum sollte es da ne assertion zuschlagen? Da müßte doch ein Compilerfehler kommen, wenn jemand versucht ne Funktion, die nen char* will mit nem const char* aufzurufen.

    Naja wenner's weg castet, dann gibts auch kein Compiler-Stress 😃 .



  • adonis schrieb:

    mhh c_str() hatte ich benutzt, da kam nen c++ error fenster,
    glaub irgendwas mit assert. nun gehts, alles sehr seltsam.

    muss darüber wohl noch viel mehr lesen:)

    Kann es vllt. sein das du versehentlich das Klammer-Paar des Methodenaufrufs vergessen hast (ist mir mal passiert), dann bekommste nämlich die Adresse der Methode...und mit der weiterzuarbeiten, in Form eines Strings ist logischerweise nicht soooooo sinnvoll :p

    Also so:

    strObj.c_str()
    

    statt so:

    strObj.c_str
    

    ➡ Denn kompilieren dürfte er das sowohl Fehler als auch Warnungs-los.

    EDIT: Mist...sry 4 DoublePost. 👎


Log in to reply