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.
sochar 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
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&)
... 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.
sochar 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