Argumentos do programa

Os argumentos de um programa são informações adicionais mandadas a ele, por exemplo: seu programa abre uma imagem, mas qual imagem deve abrir? Ou seu programa converte um arquivo em um formato de áudio para outro formato: qual arquivo será convertido e qual o nome do arquivo gerado?

Os argumentos do programa podem ser acessados mudando a definição de main para:

int main(int argc, char* argv[]) {
    std::cout << "Num. of arguments: " << argc << '\n';

    std::cout << "First arg: " << argv[0] << '\n';
}

Em que argc conterá quantos argumentos foram passados e argv conterá quais os argumentos passados. O n-ésimo argumento de um programa pode ser acessado com argv[n-1], ou seja: o 1º argumento é guardado em argv[0], o 2º em argv[1], e por aí vai. Vale lembrar que o primeiro argumento (argv[0]) é sempre o nome do programa.

Exercício

Faça o programa acima compilar (dica: está faltando importar a definição de std::cout) e o execute com:

$ ./<programa> Works!

Qual a saída da execução? O que acontece se você trocar Works! para It works!?