C ++ éditer les éléments de char * argv

Vous connaissez tous cette fonction:

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

Je veux écrire une interface de ligne de commande dans Linux pour mon programme, ce qui est généralement fait par getopt_long()

Mon programme serait exécuté en ligne de commande comme ceci:

 pop3 get --limit 25 --recent 

Par conséquent, argv[] inclurait pop3 comme nom de programme et les autres sont traitées comme des options. Je souhaite supprimer pop3 de ma chaîne et définir le premier jeton comme premier élément du tableau. Y a-t-il un moyen de le faire autrement que par une boucle?

Incrémentez simplement le pointeur argv et décrémentez l’ argc . Exemple:

 int main(int argc, char *argv[]) { argc--; argv++; return 0; } 

Cela fonctionne, car lorsque vous incrémentez argv , vous avez toujours les données précédentes en mémoire, c’est juste que l’adresse de base de l’ argv a augmenté. Et vous décrémentez argc , car vous avez maintenant un argument de moins.