2016-04-01 12 views
0

Ich habe C++ - Code, der 2 Befehlszeilenargumente analysiert und die Argumente ausgibt. Eines der Argumente ist eine URL der Google-Suche. Ich fügen Sie den Code untenURL über Befehlszeile (C++) übergeben

int main(int argc, char* argv[]) 
{ 
    std::cout << argv[1] << argv[2] << "\n"; 

} 

Wenn ich wie unten URL durch Befehlszeile nach der Kompilierung passieren,

./demo 1 https://www.google.co.in/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&client=ubuntu&q=size%20of%20unsigned%20char%20array%20c%2B%2B&oq=length%20of%20unsigned%20char*%20arra&aqs=chrome.4.69i57j0l5.13353j0j7 

ich die Ausgabe als, erhalten

[1] 8680 
[2] 8681 
[3] 8682 
[4] 8683 
[5] 8684 
[6] 8685 
[7] 8686 
[2] Done     ion=1 
[3] Done     espv=2 
[4] Done     ie=UTF-8 
[6]- Done     q=size%20of%20unsigned%20char%20array%20c%2B%2B 

Es sieht aus wie es war einige interne Aufspaltung der Saite. Gibt es eine Möglichkeit, die gesamte Zeichenfolge abzurufen?

Vielen Dank im Voraus.

+0

Ich denke, es gab die Trennung der Zeichenfolge mit Trennzeichen '&' – rohitnambisan99

Antwort

1

Sie müssen es angeben. Sonst wird & von der Shell interpretiert als "rufen Sie auf, was links von & im Hintergrund ist".

Ich nahm das Privileg, Ihr Programm durch echo zu ersetzen.

Gut:

$ echo "https://www.google.co.in/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&client=ubuntu&q=size%20of%20unsigned%20char%20array%20c%2B%2B&oq=length%20of%20unsigned%20char*%20arra&aqs=chrome.4.69i57j0l5.13353j0j7" 
https://www.google.co.in/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&client=ubuntu&q=size%20of%20unsigned%20char%20array%20c%2B%2B&oq=length%20of%20unsigned%20char*%20arra&aqs=chrome.4.69i57j0l5.13353j0j7 

Bad:

$ echo https://www.google.co.in/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&client=ubuntu&q=size%20of%20unsigned%20char%20array%20c%2B%2B&oq=length%20of%20unsigned%20char*%20arra&aqs=chrome.4.69i57j0l5.13353j0j7 
[1] 21705 
[2] 21706 
https://www.google.co.in/search?sourceid=chrome-psyapi2 
[3] 21707 
[4] 21708 
[5] 21709 
[6] 21710 
[7] 21711 
[1] Done     echo https://www.google.co.in/search?sourceid=chrome-psyapi2 
[2] Done     ion=1 
[3] Done     espv=2 
[4] Done     ie=UTF-8 
[5] Done     client=ubuntu 
[6]- Done     q=size%20of%20unsigned%20char%20array%20c%2B%2B 
[7]+ Done     oq=length%20of%20unsigned%20char*%20arra 
+0

Vielen Dank für Ihre schnelle Antwort ... :) es hat wunderbar funktioniert! – rohitnambisan99

1

Sie müssen das Argument zitieren, und Sie sollten einfache Anführungszeichen verwenden, ', um Ihre Shell zu stoppen versuchen, etwas im Inneren zu bewerten es.

Was passiert ist, dass jedes Ampersand, "&", in Ihrer Befehlszeile einen Hintergrundprozess startet. Der erste Prozess ist ./demo 1 https://www.google.co.in/search?sourceid=chrome-psyapi2 und alle folgenden sind Zuweisungen an Variablen.

Sie können aus der Ausgabe sehen (es, wie Sie all das nicht schreiben aussieht)

[1] 8680 
[2] 8681 
[3] 8682 
[4] 8683 
[5] 8684 
[6] 8685 
[7] 8686 
[2] Done     ion=1 
[3] Done     espv=2 
[4] Done     ie=UTF-8 
[6]- Done     q=size%20of%20unsigned%20char%20array%20c%2B%2B 

dass Hintergrundprozess 2 ist ion=1 (pid 8681), Verfahren 3 (pid 8682) ist espv=2, und so weiter.

+0

Danke @molbdnilo ... Es hat gut funktioniert. :) – rohitnambisan99

Verwandte Themen