2010-07-06 6 views
3

Possible en double:
Pass arguments into C program from command line.Comment obtenir le premier paramètre dans main() en C++?

mypro parameter 

Exécuté comme ci-dessus, comment obtenir le paramètre dans main() de mypro:

#include <iostream> 

int main() 
{ 
    char* str = "default_parameter"; 
    if(parameter_exists())str = parameter; 
    ... 
} 

Comment mettre en œuvre le code pseudo au dessus?

+0

@KennyTM - la réponse acceptée à cette question n'explique pas t Vous devez déclarer le principal différemment. – ChrisF

+0

Une autre question concerne C, pas C++. Il est non-trivial (et dommage) que la réponse C++ soit exactement la même. Vraiment aurait dû être 'int main (std :: vector args) {}' – MSalters

Répondre

12

Juste besoin d'ajouter (int argc, char *argv[]) à votre fonction principale. argc contient le nombre d'arguments et argv les arguments eux-mêmes.

int main(int argc, char *argv[]) 
{ 
    std::string str = "default"; 
    if (argc > 1) { str = argv[1]; } 
} 

Notez que la commande est également incluse en tant qu'argument (par exemple l'exécutable). Donc le premier argument est en fait argv [1].

+0

Veuillez spécifier que vous devriez ajouter (int argc, char ** argv) comme arguments principaux. – Patrick

+0

'chaîne' est la même chose que 'char *'? – user198729

+0

@ user198729: 'string' est une chaîne C++, que vous devriez probablement utiliser si vous êtes supposé écrire du code C++. 'char *' est une chaîne C, que vous ne devriez probablement pas utiliser en C++ sauf si vous avez une très bonne raison. –

3

Votre fonction doit utiliser la seconde de ces deux principales signatures de fonction permis C++:

int main(void) 

int main(int argc, char *argv[]) 

Dans ce, argc est le nombre d'arguments et argv est un vecteur d'argument.

Pour plus de détails, voir Wikipedia article.

2

Eh bien vous avez besoin d'une fonction principale qui accepte des arguments, comme ceci:

int main(int argc, char *argv[]) 
{ 

} 

Vous pouvez ensuite vérifier le nombre d'arguments passés à l'aide argc. Habituellement, il y en a toujours un, le nom de l'exécutable mais je pense que cela dépend du système d'exploitation et que cela peut donc varier.

1

principal a deux paramètres, int argc et char ** argv que vous pouvez utiliser pour accéder aux paramètres de la ligne de commande. Argc est le nombre de paramètres incluant le nom de l'exécutable, argv pointe sur la liste de paramètres elle-même (de sorte que argv [0] est "mypro" dans votre exemple).

simplement déclarer comme principale int main (int argc, char ** argv) {..}

2

Vous devez changer le principal être:

int main(int argc, char** argv){ 

argc est le nombre de paramaters , argv est un tableau contenant tous les paramètres (avec l'index 0 étant le nom du programme). Votre premier paramètre sera situé à l'index 1 de argv.

2
#include <iostream> 


using namespace std; 

int main(int argc, char* argv[]) { 
    for(int i = 1; i < argc; i++) 
     cout << atoi(argv[i]) << endl; 
    return 0; 
} 

Ici argc donne le nombre des arguments passés et argv [i] donne ITH paramètres de ligne de commande.

où argv [0] = « nom du programme lui-même »

1

Vous devez utiliser cette déclaration de la principale:

int main(int argc, _TCHAR* argv[]) 
{ 
    if (argc > 1) 
    { 
     str = argv[1]; 
    } 
} 

argv[0] est le nom de l'exécutable, de sorte que les paramètres de démarrage à argv[1]

2

Lorsque attend des arguments de ligne de commande, main() accepte deux arguments: argc pour le nombre d'arguments et argv pour les valeurs des arguments réels. Notez que argv[0] sera toujours le nom du programme.

Considérons un programme appelé comme suit: ./prog hello world:

argc = 3 
argv[0] = ./prog 
argv[1] = hello 
argv[2] = world 

Voici un petit programme qui reflète la pseudo-code:

#include <iostream> 
#include <string> 

int main(int argc, char **argv) { 
    std::string arg = "default"; 
    if (argc >= 2) { 
     default = argv[1] 
    } 
    return 0; 
} 
1

Sous Windows, utilisez la signature suivante au lieu d'obtenir des arguments Unicode:

int wmain(int argc, wchar_t** argv) 
Questions connexes