Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Básico sobre linha de comando, argv e argc
  2. Criar uma calculadora básica

Os tópicos listados acima para estudo são referentes a aplicações console podendo não ser válidos para outro tipo de aplicação.

A linguagem C++ nos permite manipular os dados informados por um usuário de nossos programas através de argumentos passados por linhas de comando. Por exemplo, um programa que realiza operações aritméticas básicas, pode receber argumentos como abaixo:

Sintaxe
nome_app.exe 1 2 +
Onde:
nome_app : nome do executável do seu programa após a compilação
1, 2 + : qualquer argumento passado pela linha de comando separados por espaçamento 
para que sejam identificados como argumentos distintos.

A passagem desses argumentos é feita por intermédio na função principal main que utiliza dois parâmetros: argc e *argv[].

Sintaxe
int main(int argc, string *argv[]);
Onde:
argc : número de argumentos.
*argv[] : vetor de string contendo argumentos. O primeiro argumento é o nome do executável 

Com a utilização desses parâmetros acima, quando usamos a linha de comando exemplificada anteriormente, podemos ter acesso aos argumentos passados pelo usuário.

Exemplo 1
#include <iostream>
using namespace std;
  
int main(int argc, char* argv[])
{
    cout << "Qtd. argumentos:" << argc << endl;

    for (int i = 0; i < argc; ++i)
        cout << argv[i] << endl;;
  
    return 0;
}
Entrada
main.exe 1 2 +
Saída
main.exe
1
2
+

Os nomes dos parâmetros são argc e argv utilizados por padrão, mas esses podem ter seus nomes alterados mantendo-se os tipos de dados na mesma ordem:

Exemplo 2
#include <iostream>
using namespace std;
  
int main(int qtd_args, char* lista_args[])
{
    cout << "Qtd. argumentos:" << qtd_args << endl;

    for (int i = 0; i < qtd_args; ++i)
        cout << lista_args[i] << endl;;
  
    return 0;
}
Entrada
main.exe 1 2 +
Saída
main.exe
1
2
+

Os comandos de decisão, repetição e outros devem ser utilizados para trabalhar com os argumentos de linha de comando de acordo com a necessidade da aplicação.

De acordo com o tipo de argumento informado, será necessário realizar um tratamento específico como validação, casting, conversão de tipo entre outros.

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.

  1. 29/07/2025 - revisão 3 - Correções pontuais; Ajustes em sintaxes; Adiçao de links internos
  2. 28/09/2024 - revisão 2 - Ajustes pontuais; Adição de links internos
  3. 09/02/2024 - revisão 1 - correção em navegação,css e erros gramaticais
  4. 30/06/2023 - versão inicial