argv to string umwandeln
-
Hallo! Stehe bei einem ziemlich trivialen Problem an, ich weiß nicht wie ich argv in einen String bekomme.
Habe folgendes probiert hat funktioniert aber leider nicht
#include <string> #include <iostream> using namespace std; int main(char ** argv , int argc){ char p_progName[250] = {" "}; string progName(p_progName); progName = argv; //funktioniert nicht cout << argv <<endl; //funktioniert
MFG THE_ONE
-
Warum sollte man auch einen Array von Strings in einen String bekommen?
Du kannst natürlich versuchen, argv[0] in den String zu bekommen. Das dürfte so wie Du es versuchst klappen. BTW: Wofür ist p_progName?
-
Muss das nicht einmal dereferenziert werden?
Und ist es nicht Übliucherweise umgekehrt, also argc zuerst?
-
cout liefert folgende ausgabe:
./mmanage database 0x2
meine Variante ist eh schlecht, ich wollt zuerst ein stringobjekt anlegen und es dann überschreiben. wie würde man es besser richtiger machen.
LordJaxom schrieb:
Warum sollte man auch einen Array von Strings in einen String bekommen?
Du kannst natürlich versuchen, argv[0] in den String zu bekommen. Das dürfte so wie Du es versuchst klappen. BTW: Wofür ist p_progName?
#include <string> #include <iostream> using namespace std; int main(char ** argv , int argc){ char p_progName[250] = {" "}; string progName(p_progName); progName = argv[0]; //funktioniert nicht cout << argv <<endl; //funktioniert
das mit argv[0] liefert->
Segmentation fault
-
argv basiert auf argc Argumenten, also:
std::vector<std::string> args; for(int i = 1; i < argc; ++i) // oder doch <= ?! scheiß teil... args.push_back(argv[i]); // Ausgabe: for(int i = 0; i < args.length(); ++i) cout << "Argument #" << i << ": " << args[i] << endl;
MfG SideWinder
-
THE_ONE schrieb:
cout liefert folgende ausgabe:
./mmanage database 0x2
Und die Erklärung kam von Shinja. Der erste Parameter ist die Anzahl der Parameter (üblicherweise mit argc bezeichent) auch wenn Du es als char** interpretierst. Der Wert bleibt 2. Du hast nämlich 2 Parameter: "./manage" und "database".
-
Danke für eure Hilfe:
argc und argv waren vertauscht
Habs jetzt so:#include <string> #include <iostream> using namespace std; int main(int argc,char ** argv){ string progName(argv[0]); cout << progName << ">>"<< endl; }
MFG THE_ONE