J'utilise getopt_long pour traiter les arguments de ligne de commande dans une application C++. Les exemples montrent tous quelque chose comme printf("Username: %s\n", optarg)
dans les exemples de traitement. C'est très bien pour montrer un exemple, mais je veux pouvoir stocker les valeurs pour les utiliser plus tard. La plupart du reste du code utilise string
objets au lieu de char*
donc j'ai besoin de lancer/copier/tout ce que le contenu d'optarg dans une chaîne.Obtenir optarg en tant qu'objet chaîne C++
string bar;
while(1) {
c = getopt_long (argc, argv, "s:U:", long_options, &option_index);
if (c == -1) break;
switch(c)
{
case 'U':
// What do I need to do here to get
// the value of optarg into the string
// object bar?
bar.assign(optarg);
break;
}
}
Le code ci-dessus compile, mais quand il exécute je reçois une erreur Illegal instruction
si je tente d'imprimer la valeur de la barre à l'aide printf (il semble fonctionner très bien pour Cout). Je ne connais pas assez le débogage de la ligne de commande pour mieux comprendre ce que pourrait être l'instruction illégale. J'avais couru valgrind, mais le volume pur des erreurs de mémoire qui résultent de cette erreur ont rendu difficile pour moi de localiser exactement ce qui pourrait causer cette erreur.
Je suppose que je devrais mettre ceci dans ma liste de choses importantes à se rappeler. Merci! –