Konvertieren von Befehlszeilenargument in Zeichenfolge
Weiß ich nicht C++.
Ich habe ein Programm, das liest sich hart codierte Datei Weg, und ich will es Lesen der Datei Pfad von der Kommandozeile statt. Zu diesem Zweck änderte ich den code wie folgt:
#include <iostream>
int main(char *argv[])
{
...
}
aber argv[1]
variable ausgesetzt diese Weise scheint der Typ Zeiger, und ich brauche es als string. Was sollte ich tun, um zu konvertieren mit diesem Befehl Linie argument zu string?
Kommentar zu dem Problem
Das kanonische format für
main
ist int main(int argc, char *argv[])
. Was haben Sie kompiliert wird, aber es führt zu undefiniertem Verhalten. Ich brauche nicht arg zählen, nur die string-Repräsentation erste argument.
hmm..
std::string s(argv[1]);
ist, dass das, was Sie tun wollen? @theta: Es spielt keine Rolle, es immer noch nicht funktionieren.
"Es wirft Fehler wenn ich das Programm auf der Kommandozeile." -- Fühlen Sie sich frei, um ein wenig genauer.
InformationsquelleAutor der Frage theta | 2013-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist bereits ein array von C-style strings:
Argument
argc
ist die Anzahl der Argumente plus die aktuelle exec-Datei.InformationsquelleAutor der Antwort deepmax
Können Sie eine
std::string
InformationsquelleAutor der Antwort juanchopanza
Keine Notwendigkeit, upvote dies. Es wäre cool gewesen, wenn Benjamin Lindley machte seine one-liner Kommentar eine Antwort, da er aber noch nicht, hier geht:
std::vector<std::string> argList(argv, argv + argc);
Wenn Sie nicht einschließen möchten
argv[0]
so dass Sie nicht brauchen, um deal mit der ausführbaren Lage, nur erhöhe den pointer um eins:std::vector<std::string> argList(argv + 1, argv + argc);
InformationsquelleAutor der Antwort kayleeFrye_onDeck
Ist es einfach. Nur dazu:
@Benjamin Lindley sind Sie richtig. Dies ist keine gute Lösung. Bitte Lesen Sie die man beantwortet von juanchopanza.
InformationsquelleAutor der Antwort Careal Manic
InformationsquelleAutor der Antwort brkeyal