Para exemplificar melhor o uso de linha de comando na linguagem C++, vamos criar uma
simples calculadora aritmética de inteiros. Vamos utilizar o exemplo criado
anteriormente e adaptá-lo para utilização de argumentos passados pela linha de comando.
A sintaxe calculadora será bem simples, sendo dois argumentos representando dois números que
queremos realizar uma operação, e um último argumento que vai informar qual a
operação desejamos realizar.
Sintaxe: linha de comando
main.exe operando1 operando2 operacao
Exemplos
main.exe 4 2 +
main.exe 4 2 x
main.exe 4 2 /
main.exe 4 2 -
Exemplo 3 : Parte 1 - Operações
//main.cpp
#include <stdiostream>
#include <string> //atoi
using namespace std;
int adicao(int a, int b)
{
return a + b;
}
int subtracao(int a, int b)
{
return a - b;
}
int multiplicacao(int a, int b)
{
return a * b;
}
int divisao(int a, int b)
{
return a / b;
}
Exemplo 3 : Parte 2 - main
//main.cpp
int main( int argc, char *argv[] )
{
if(argc == 4 )
{
int parametro1 = atoi(argv[1]); //conversão de string p/ inteiro
int parametro2 = atoi(argv[2]);
char operacao = *argv[3];
int resultado = 0;
//necessário verificar se operação é válida antes
switch(operacao){
case '+':
resultado = adicao(parametro1,parametro2);
break;
case 'x':
resultado = multiplicacao(parametro1,parametro2);
break;
case '/':
resultado = divisao(parametro1,parametro2);
break;
case '-':
resultado = subtracao(parametro1,parametro2);
break;
}
cout << "argumento: " << parametro1 << " " << parametro2 << endl;
cout << "operação: " << parametro1 << " " << operacao << " " << parametro2 << endl;
cout << "Resultado: " << resultado << endl;
}
else
{
cout << "numero de argumento errados." << endl;
}
}
Na parte 1 acima, temos a declaração das operações aritméticas básicas contendo funções e
seus repectivos parâmetros numéricos inteiros com um retorno do mesmo tipo.
Na parte 2, dentro de nossa função main, temos o tratamento básico da linha de comando, conversão de operandos e
a execução das operações.
Executando nossa calculadora utilizando a entrada abaixo, temos:
Entrada
main.exe 1 2 +
Saída
3
A biblioteca <string> foi necessário para a conversão dos argumentos númericos
armazenados como string na parâmetro *argv[]. Outros métodos para manipulação de string
podem ser conferidos em
C++ Básico: Strings.
O tratamento de erro vistos em C++: Gerenciando Erros devem ser
usados para tratar e exibir mensagens de erro para o usuário.
Os comandos de decisão foram visto em
C++ Básico: Comandos de Decisão e o comando de escolha switch
foi visto em C++ Básico: Comando de Escolha.