Funktionsparameter der main()
-
Hallo, ich bin noch neu in der C/C++ Programmierung.
Ich habe vielleicht ein etwas ungewöhnliches Problem.
Die Übergabe der Funktionsparameter für die main() Funktion sind ja üblicherweise "int argc" und "char **argv".
Jetzt möchte ich bei einer Konsolenanwendung nicht die Daten ( in dem Fall eine Wav Datei ) per Übergabe an die main realisieren, sondern die Daten per Eingabeaufforderung an das Programm übergeben. Dabei sollen aber die Daten genau so behandelt werden, als hätte ich sie direkt an die main übergeben.Ich hoffe,daß das jemand verstanden hat und mir helfen kann.
Danke
-
Das hab ich nicht so ganz verstanden. Schildere doch noch mal ganz genau wie du die Daten an die Eingabeaufforderung übergeben willst.
Etwa so:
deinprogramm.exe die_wav_datei
Wenn ja, dann verstehe ich deine Frage noch weniger. Denn zu diesem Zweck erhält die main()-Funktion ja Parameter.
Wenn nein, dann erklär's mal etwas genauer
Caipi
-
Ja genau eben nicht so! Sondern etwa so
programm.exe
Bitte wav datei angeben:"Dann die Eingabe"Und jetzt sollen die Parameter "int argc" eben die Zahl der Eingabe ( also 2 ) beinhalten und "char **argv" die angabe der wav-Datei.
Also so, als ob ich die dikekte übergabe gewählt hätte
Gruß
-
Du könntest entweder ein Hilfsprogramm (in Form eines scripts) machen, dass dein Programm mit den richtigen Parametern aufuft oder arc und argv nachträglich verändern.
Btw: was bitte soll das bringen?
-
int main(int argc,char** argv) { std::ifstream in(argv[1],std::ios::in|std::ios::binary); //Dann Zeichen einlesen }
-
Danke für die Anwort. Ich werde das mal ausprobieren
P.S.: Das soll eigentlich nur bringen, das ich die Datei direkt angeben kann und nicht extra die Konsole geöffnet werden muß ( beim Start des Programms unter Windows )
-
evil-peter schrieb:
Danke für die Anwort. Ich werde das mal ausprobieren
P.S.: Das soll eigentlich nur bringen, das ich die Datei direkt angeben kann und nicht extra die Konsole geöffnet werden muß ( beim Start des Programms unter Windows )
Wieso lässt du dann argc und argv nicht komplett weg?
Und machst stattdessen sowas a la:int main() { cout << "\n Bitte datei eingeben: "; string filename; getline(cin, filename); // Jetzt mit Datei arbeiten, etc... return 0; }
Caipi
-
so nach dem motto warum einfach wenns umständlich geht
-
Wen meinst du?
-
Das Problem ist doch,daß ich ein risiegen Quellcode habe, der mit diesen Parametern arbeitet. Ich habe da Probleme mit der eigenen Implementierung, deshalb erstmal so. Später mache ich das dann eh anders.
Soll nur ein Anfang sein.
-
evil-peter schrieb:
Das Problem ist doch,daß ich ein risiegen Quellcode habe, der mit diesen Parametern arbeitet. Ich habe da Probleme mit der eigenen Implementierung, deshalb erstmal so. Später mache ich das dann eh anders.
Soll nur ein Anfang sein.Wo ist das Problem?
int main() { int argc; vector<string> argv; // oder char** falls der Code das verlangt } // falls du beides haben willst: int main( int argcount, char* argvector[] ) { int argc; vector<string> argv; // oder char** falls der Code das verlangt if (argcount > 1) { argc = argcount; argv.insert(argv.begin(), argvector, argvector+argcount)); } else { // Eingabe } }
Ist allerdings wirklich keine Lösung auf Dauer.