zwei char-variablen als ein parameter



  • hi
    ich habe folgendes problem:
    mein programm soll eine datei aus einem zip-archiv entpacken. dafür habe ich eine funktion die als parameter "dateiname@zip-archiv.zip" bekommt. das ganze ist ein konsolenprojekt und der benutzer soll nun die daten eingeben können. also

    char cArchiv[100];
    char cDatei[100];
    
    cout << "Archiv: ";
    cin >> cArchiv;
    cout << "Datei: ";
    cin >> cDatei;
    

    aber wie übergebe ich das nun der funktion?

    mit php ging das einfach

    funktion(cDatei"."@"."cArchiv);
    

    mit c++ ist das irgendwie nicht so einfach. hab schon rumprobiert, aber irgendwie will es nicht. ich hoffe ihr könnt mir helfen.



  • char cTogether[201];
    wsprintf (cTogether, "%s@%s", cDatei, cArchiv);
    

    Mfg Ominion



  • Hallo

    oder besser gleich die richtigen C++ Mittel wie std::string benutzen, dann kann man auch ganz einfach aneinanderhängen.

    bis bald
    akari



  • hi
    danke für die antworten, allerdings bekomme ich bei
    wsprintf (cTogether, "%s@%s", cDatei, cArchiv);
    die fehlermeldung: error C2664: 'wsprintfW': Konvertierung des Parameters 1 von 'char [201]' in 'LPWSTR' nicht möglich...
    mfg
    fabi



  • // UNICODE
    wchar_t waTogether[201];
    wsnprintf(cTogether, 200, "%s@%s", cDatei, cArchiv);
    // !UNICODE
    char caTogether[201];
    snprintf(cTogether, 200, "%s@%s", cDatei, cArchiv);
    

    So und in anständiger C++ Manier sieht das wie folgt aus:

    std::cout << "Archiv: " << std::flush;
    std::string archiv;
    std::getline(std::cin, archiv);
    std::cout << "Datei: " << std::flush;
    std::string file;
    std::getline(std::cin, file);
    
    file += "@";
    file += archiv;
    


  • mit den char variablen funktioniert das zwar immer noch nicht, aber egal.
    strings gehen, allerdings müsste ich den letzten string dann als char der funktion übergeben.
    mit Dateiname.c_str() läuft es nicht, weil keine konvertierung von const char in char * möglich ist.
    auch den anders irgendwie zu casten, will nicht.
    wie ist das nun möglich?



  • Hallo

    Den Autor der unbekannten Funktion dazu zwingen sich über Const-Correctness gedanken zu machen 🙄
    Alternativ kannst du auch den const_cast verwenden, um das Rückgabeergebnis von c_str() "freizuschalten". Benutzung natürlich auf eigene Gefahr.

    bis bald
    akari


Anmelden zum Antworten