2016-04-11 11 views
1
int main(int argc, char *argv[]) 
{ 
    for(count = 0; count < argc; count++) 
    { 

     cout << " argv[" << count << "]" << argv[count] << "\n" <<  endl;   
    } 
} 

Befehl $ ls -l | ./main.outWie lese ich die gesamte Befehlszeile?

Der Ausgang

Command-line arguments : 
argv[0] ./main.out 

Meine Frage ist, wie kann ich mein Programm zeigen, wird der Befehl vor, dass zu lesen, ls -l

+0

AFAIK kann man nicht. Diese Parameter werden nicht an das Programm übergeben. – NathanOliver

+0

Beiseite: Wenn Sie versuchen, dies zu tun: [Pars ls nicht analysieren] (http://mywiki.wooledge.org/ParsingLs). –

Antwort

2

Kommandozeilenparameter übergeben werden als Argumente beim Aufruf des Programms. Und Ihr Programm liest die gesamten Befehlszeilenargumente.

Aber was Sie tun ($ ls -l | ./main.out) ist Rohrleitung Standardausgabe des Befehls ls -l in den Standard-Eingang des Programms ./main.out.

von stdin lesen zu können, tun Etwas wie:

std::string value; 
while(std::getline(std::cin, value)){ 
     std::cout << value << std::endl; 
} 

Siehe Reading piped input with C++ und http://www.site.uottawa.ca/~lucia/courses/2131-05/labs/Lab3/CommandLineArguments.html

Verwandte Themen