C/Visual C - Argumentos de C++

 
Vista:
sin imagen de perfil

Argumentos de C++

Publicado por Leek (6 intervenciones) el 28/08/2010 00:19:30
Hola a todos, he estado buscando informacion para crear un programa de linea de comandos, por el que se le puedan pasar argumentos, es decir, supongamos que quiero crear un programa llamado "hola.exe", y que cuando lo escriba en la linea de comandos, se le puedan poner mas opciones, tales como "hola -saludo" o "hola -despedida". He leido que esto se puede hacer con parametros en el main, pero no se como usarlos ya en las instrucciones. Tambien si es posible, si se ejecuta el programa tecleando solamente "hola" en la linea de comandos, me devuelva algun texto o algo por el estilo.

Gracias de antemano...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Argumentos de C++

Publicado por pepe (32 intervenciones) el 28/08/2010 23:45:02
los argumentos se indican así:

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

Tenemos "argc" que nos indica el número de cadenas de texto recibidas en "*argv[]", incluido el nombre del ejecutable, por lo tanto siempre será 1 o mayor que 1.

ej. "hola.exe -saludo -despedida"
argc=3
argv[0]="hola.exe"
argv[1]="-saludo"
argv[2]="-despedida"

para usarlo podríamos poner:

int main(int argc, char* argv[])
{
switch(argc)
{
case 1:
/* Codigo que imprime en pantalla el uso del programa */
break;
case 2:
/* Codigo que comprueba el argumento nº1 -saludo */
break;
case 2:
/* Codigo que comprueba el argumento nº2 -despedida */
break;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Argumentos de C++

Publicado por Leek (6 intervenciones) el 29/08/2010 05:04:38
Hola pepe, y hola a todos; bueno, despues de lo que me contestó pepe, escribi el siguiente codigo con poco exito, el programa si compila, pero estos son los tres casos.

1) "hola": todo sale bien
2) "hola -saludo": todo sale bien, y me muestra el texto, que es "hola".
3) "hola -despedida": aqui es donde sale mal, pues a pesar de que el codigo dice que muestre "Adios", me sigue mostrando "Hola" como si le hubiera pasado el argumento "-saludo".

Bueno, el codigo es este:

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
argv[1] = "hola.exe";
argv[2] = "-saludo";
argv[3] = "-despedida";

switch()
{
case 1:
cout << "Escribir argumento" << endl;
return 0;

case 2:
cout << "Hola " << endl;
return 0;

case 3:
cout << "Adios" << endl;
return 0;
}
}

Repito, los resultados son:

"hola"
Escribir argumento

"hola -saludo"
Hola

"hola -despedida"
Hola

Quiero que "hola -despedida" me muestre "Adios" tal como se supone que lo puse en codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Argumentos de C++

Publicado por Capitan Kirk (97 intervenciones) el 30/08/2010 08:30:10
Los argumentos pasados no se tratan como tú lo has hecho. argc contendrá el número de parámetros pasados, y argv es un array de punteros a carácter, que contendrá cada uno de los argumentos pasados. Como ya te han comentado, argc valdrá, como mínimo, 1. Esto corresponde al primer elemento de argv (argv[0]), que apunta al primer parámetro de la lista, que es el nombre del ejecutable. Así pues, no puedes asignar valores a los elementos de argv.

Además (aunque no sé si ha sido un error de escritura), la sentencia switch debe llevar un nombre de variable dentro del paréntesis.

Por último, si escribes "hola -despedida", tienes solamente dos argumentos, que son: argv[0] = "hola.exe" y argv[1] = "-despedida", con lo que el comando

"hola -despedida"

te seguirá escribiendo Hola.

Para el tratamiento de los parámetros, vuelvo a remitirte a la respuesta de Pepe.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar