Probleme beim Übergeben von Argumenten in main()
-
Moin!
Zunächst erstmal allen ein frohes neues Jahr!
Ich möchte gerne die Argumente auslesen, welche über die Kommandozeile beim Starten einer .exe übergeben werden:
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, char** argv[]) { for (int i=0; i<argc; i++) { cout << argv[i] << endl; } getchar(); return 0; }Führe ich das Programm nun beispielsweise mit folgendem Aufruf auf
test.exe testso erhalte ich anstelle des Dateinames und "test"
007A2BEC 007A2BF8Das Programm wurde mit Visual Studio 2010 erstellt.
Ich hoffe, ihr könnt mir weiterhelfen?
Gruß,
Lalex
-
Es muss entweder
char **argvoderchar *argv[]heißen, aber nichtchar **argv[].
-
Ah, vielen Dank! Wie blöd...
Nun wird allerdings nur das erste Zeichen statt des gesamten Strings ausgegeben, in diesem Fall:
t tIn diversen Beispielen im Netz (http://www.java-samples.com/showtutorial.php?tutorialid=460) ist dies nicht der Fall.
-
Zeig mal Code. Ich wette du hast einfach per Zufallsprinzip ein paar Sterne und [] in deinen Code gestreut, bis es compilierte, oder?
-
Ne...
Der Code ist genau wie oben, abgesehen von "char **argv" statt "char** argv[]".
int _tmain(int argc, char **argv) { for (int i=0; i<argc; i++) { cout << argv[i] << endl; } getchar(); return 0; }
-
Entweder
int main(int argc, char **argv)oder
int _tmain(int argc, TCHAR **argv)
-
Vielen Dank für die schnellen Antworten, wenn ich main() benutze funktioniert es nun auch.
Für
int _tmain(int argc, TCHAR **argv)erhalte ich allerdings immer noch bspw. "00603A30"...
Aber nun ist mir erstmal geholfen, danke!
-
Dieses _tmain und TCHAR etc. ist Microsoft Kram, kein Standard-C++. Nur damit du nicht hinterher überrascht bist.

-
So gehts:
#include <iostream> #include <windows> // Hab gerade n Borland Compiler ohne #include <windows> kennt er den _tmain Kram nicht using namespace std; int _tmain(int argc, TCHAR **argv) { cout<<argv[1]; // Gibt das aus was du als ersten Parameter eingegeben hast. return 0; }
-
°_° schrieb:
So gehts:
#include <iostream> #include <windows> // Hab gerade n Borland Compiler ohne #include <windows> kennt er den _tmain Kram nicht using namespace std; int _tmain(int argc, TCHAR **argv) { cout<<argv[1]; // Gibt das aus was du als ersten Parameter eingegeben hast. return 0; }Aber auch nur wenn du das ganze nicht als unicode übersetzt (Hier ist die projekt einstellung "Character Set" in Visualstudio gemeint, was genau diese Einstellung am ende für Compiler parameter generiert weis ich nicht). Wenn das project als unicode übersetzt wird, dann ist TCHAR ein wchar_t und über std::cout kann ein wchar_t array nicht als string ausgegeben werden.
für Unicode wäre dann eher std::wcout notwendig.