Name des Ausgangsfile = Name des EIngangsfiles mit anderer Endung
-
Mojens !!
Beim Aufruf meines Programms lese ich eine (bzw. mehrere) Config Datei(en) ein.
int main(int argc, char *argv[]) { for (int i=1; i<argc-1;i++) { ifstream InStream(argv[i], ios::in); blabla } }
Pro config Datei möchte ich nun eine Bilddatei erzeugen, welche den selben Namen wie die eingelesene Datei (z.B. config_1.txt) jedoch eine Andere Endung (z.B. config_1.tga) hat.
was muß dann in der Zeile
ofstream ofl(..., ios::binary);
anstelle der Pünktchen stehen?
Danke und viele Grüße
Lutz
-
wahrscheinlich muss vorher ein string replace beim dateinamen erfolgen
-
bsp:
void replaceext(std::string &s, const std::string &strExt) { s.replace(s.rfind(".") + 1, s.size(), strExt); } int main() { std::string str("config_1.txt"); replaceext(str, "jpg"); std::cout << str << std::endl; return 0; }
-
Danke !!!
War gerade selber dabei es mit replace zu versuchen.
Dabei bin ich auf ein weiteres Problem gestoßen:argv[] ist vom Typ *char.
strings scheinen intern vom Typ unsigned int* zu sein. Jedenfalls bekomme ich eine Meldung invalid convertion from char* to unsigned int*...
Na ich bastel mal noch n bisschen. Wer weiß was das wieder soll.
Grüße,
Lutz
-
Ach nee, dit war n Klammerfehler.
Hab zwar immer noch Fehlermeldungen, aber wer weiß...
-
int main(int argc, char *argv[]) { std::string str; for(int i=1; i<argc-1;i++) { str = argv[i]; // mach was replaceext(str, "jpg"); // mach wieder was } }
-
Ich habs jetzt so gemacht:
Eigentlich nach Lehrbuch.string cOutName; cOutName = argv[i]; cOutName.replace(cOutName.find( "dat"), strlen("dat"),"tga"); cout << cOutName << endl;
Er kompiliert und beim Starten gibts diese Meldung:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::replace
Aborted
-
terminate called after throwing an instance of 'std::out_of_range'
mit andren worten: du greifst auf ein feld ausserhalb des strings zu
-
So, hab die Zeile für den Austausch von xyz in tga von Miller_m übernommen und es funktioniert.
Warum meine Version nicht lief weiß ich zwar immer noch nicht aber was solls.
Auf jeden Fall euch ein Dickes Dankeschön!!
-Lutz