Analizar los argumentos de la línea de comandos

Este programa de ejemplo permite la entrada de parámetros realizando un análisis básico, tal como esta es muy fácil extender las posibilidades de la entrada de argumentos para tu programa.

#include <iostream>
#include <string>

using namespace std;

void Usage()
{
    cout << "Uso: myApp -z -n <nombre> -a <apellido> -h" << endl;
    cout << "o:   myApp /z /n <nombre> /a <apellido> /h" << endl;;
}

int main(int argc, char* argv[])
{
    bool z = false;
    string name;
    string ape;

    int i;

    if (argc < 2)
    {
        Usage();
        return 1;
    }

    for (i=1; i < argc ;i++)
    {
        if (strlen(argv[i]) < 2)
            continue;

        if (argv[i][0] == '-' || argv[i][0] == '/')
        {
            switch (argv[i][1])
            {
                case 'z':
                    z = true;
                    break;
                case 'n':
                    name = argv[i+1];
                    break;
                case 'a':
                    ape = argv[i+1];
                    break;
                case 'h':
                    Usage();
                    return 0;
                default:
                    cout << "Comando '-" << argv[i][1] << "' no valido.";
                    return 1;
            }
        }
    }
    cout << "Z = " << z <<endl;
    cout << "Nombre = " << name <<endl;
    cout << "Apellido = " << ape <<endl;

    system("pause");
    return 1;
}

Comentarios