2008-12-25 4 views
2

J'essaie actuellement de faire une petite application qui remplit différentes fonctions. En ce moment, j'ai une application de console pop up et je demande ce que je veux faire, mais parfois je préfère le lancer avec quelque chose comme MyApp.exe -printdocuments ou quelque chose de ce genre.Ajout de paramètres pour un programme au lancement

Y a-t-il des tutoriels qui peuvent me montrer un exemple simple?

Répondre

8

En C++, votre fonction main() peut avoir les paramètres argc et argv, qui contiennent les arguments transmis sur la ligne de commande. Le argc est le nombre d'arguments (y compris le nom de l'exécutable lui-même) et argv est un tableau de pointeurs vers des chaînes terminées par le caractère nul de longueur argc.

Par exemple, ce programme imprime ses arguments:

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    for (int i = 0; i < argc; i++) { 
     printf("argv[%d]: %s\n", i, argv[i]); 
    } 
    return 0; 
} 

Tous C ou C++ tutoriel aura probablement plus d'informations à ce sujet.

0

votre méthode de point d'entrée-à-dire en C++ votre principale méthode doit ressembler

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

vous pouvez lire ce article et accomplir ce que vous essayez de faire

1

Vous feriez bien d'utiliser une bibliothèque pour ça. Voici quelques liens qui pourraient vous aider à démarrer sur les arguments de la ligne de commande avec C++.

  1. gperf
5

Vous pouvez utiliser boost :: program_options Pour ce faire, si vous ne voulez pas utiliser la bibliothèque Boost, vous devez analyser les principaux arguments de la fonction par vous-même.

2

getopt est une fonction POSIX (implémentations pour Windows existent) qui peuvent vous aider à vos arguments: analysez

#include <unistd.h> // getopt 

// call with my_tool [-n] [-t <value>] 
int main(int argc, char *argv[]) 
{ 
    int opt; 
    int nsecs; 
    bool n_given = false, t_given = false; 
    // a colon says the preceding option takes an argument 
    while ((opt = ::getopt(argc, argv, "nt:")) != -1) { 
     switch (opt) { 
     case 'n': 
      n_given = true; 
      break; 
     case 't': 
      nsecs = boost::lexical_cast<int>(optarg); 
      t_given = true; 
      break; 
     default: /* '?' */ 
      std::cerr << "Usage: " 
         << argv[0] << " [-t <value>] [-n]\n"; 
      return 1; 
     } 
    } 
    return 0; 
} 
Questions connexes