pfad als varible



  • hallo,

    habe folgendes problem: ich möchte in einem programm einen pfad als z.b. string an den befehl _popen übergeben. leider benötigt _popen eine konstante. hat jemand eine idee wie ich das (auch anders) realisieren kann. hier der sc:

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    string datei;
    istringstream idat;
    FILE fdat;
    
    int main()
    {
      cout << "Pfad eingeben: ";
      cin >> datei;
      idat.str(datei);
      fdat = _popen(datei,"r");
      //fdat = _popen("c:\\pfad\\programm.exe","r"); //das funzt, ist aber konstant
    }
    

    auch "fdat = _popen(reinterpret_cast<char*>(datei),"r");" bringt nichts

    hat jemad eine idee wie 'datei' eine variable sein kann?
    bin für jede hilfe dankbar



  • was komm den für fäler?

    ich denke es likt daran das wen du einen pfad eingibst kein \\ hast oder?

    MFG TaccoGo



  • sorry, hatte ich vergessen zu schreiben:

    programm.cpp: In function `int main()':
    programm.cpp:19: cannot convert `std::string' to `const char*' for 
       argument `1' to `FILE* _popen(const char*, const char*)'
    

    also, das ist der fehler vom compiler...



  • datei.c_str()



  • ahso
    entweder du deklarirst Datei kleich als char Datei[30];
    oder wandelst string in char* um.
    so

    char buf[30];
    sprintf(buf,"%s",Datei);
    

    dan ist der dateiname in buf.

    MFG TaccoGo



  • dank für die schnellen antworten, also itgendwas mache ich falsch

    @MFK

    fdat = _popen(datei.c_str(),"r");
    

    Fehlermeldung des compilers

    programm.cpp:16: no match for `FILE& = FILE*' operator
    d:/appz/mingw/include/stdio.h:152: candidates are: _iobuf& 
       _iobuf::operator=(const _iobuf&)
    

    @TaccoGo

    ...
    char buf[30]; 
    ...
    
    int main()
    ...
      sprintf(buf,"%s",datei);
    ...
    

    Warnmeldung

    programm.cpp:15: warning: cannot pass objects of non-POD type `struct 
       std::string' through `...'; call will abort at runtime
    

    nach der pfadeingabe stürztz das programm ab

    mhhh, was mache ich falsch?



  • danke euch

    hatte bei der definition von FILE das '*' vergessen

    FILE *fdat;

    nun funzt es mit :

    fdat = popen(datei.c_str(),"r");
    

    dank an euch alle



  • TaccoGo schrieb:

    ahso
    entweder du deklarirst Datei kleich als char Datei[30];
    oder wandelst string in char* um.
    so

    char buf[30];
    sprintf(buf,"%s",Datei);
    

    dan ist der dateiname in buf.

    MFG TaccoGo

    Bist du dir sicher, dass du das ernst meinst?

    @enno-tyrant: Es muss FILE* heissen.

    [edit]
    na da warste doch schneller 🙂
    [/edit]

    mfg
    v R


Anmelden zum Antworten