Existe-t-il un moyen d'obtenir des chaînes c++ à partir de la ligne de commande comme en Java ?
public static void main(String[] args)
où args est un tableau de chaînes de caractères C++ ?
Existe-t-il un moyen d'obtenir des chaînes c++ à partir de la ligne de commande comme en Java ?
public static void main(String[] args)
où args est un tableau de chaînes de caractères C++ ?
Pas précisément, mais vous pouvez vous en approcher facilement.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
typedef vector<string> CommandLineStringArgs;
int main(int argc, char *argv[])
{
CommandLineStringArgs cmdlineStringArgs(&argv[0], &argv[0 + argc]);
for (int i = 0; i < cmdlineStringArgs.size(); ++i)
{
cout << cmdlineStringArgs[i] << endl;
}
return 0;
}
Ceci utilise simplement le constructeur surchargé de std::vector qui prend une paire d'itérateurs début/fin pour copier les arguments de la ligne de commande dans les vecteurs. C'est à peu près la même chose qu'en Java à partir de là.
Vous pouvez également construire un objet autour de ce vecteur avec des méthodes utilitaires pour convertir les arguments, mais cela ne sert pratiquement à rien. Il y a aussi beaucoup de paquets avec des objets qui traitent de l'interprétation des commutateurs de ligne de commande et autres. ACE, POCO, QT, etc. sont tous fournis avec de telles facilités.
En C, la signature de votre fonction principale ressemble à ceci :
int main(int argc, char** argv)
.
argc
contient le nombre d'arguments transmis par la ligne de commande. Le nom de l'exécutable est en position 0, et ajoute un à argc
.
argv
contient un tableau de chaînes de caractères contenant les arguments. Encore une fois, la position 0 est le nom de l'exécutable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.