Toon posts:

[c++] Commandline options

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een programma wat ik via de commandline wil runnen (linux OS). Ik wil nu via de commandline een aantal opties toevoegen. Een daarvan is een bestandsnaam. Nu kan ik alleen de optie -c meegeven. Maar ik betwijfel of ik dit op de juiste manier heb gedaan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char **argv)
{
    char circ[]     = "-c"; 
        for (int i = 0; i<argc; i++)
    {   
        int compareCirc = strcmp(argv[i],circ);
        if (compareCirc == 0){
            circular = true;
            cout << "Sequence is circular." << endl;
            break;
        }
    }
}


Ik wil nu dus ook een bestandsnaam mee geven. Dus dan wordt het zoiets als:
#> repfinder filename.txt -option1 -option2

Hoe kan ik dit het best doen en is de manier waarop ik het nu gedaan heb goed.

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 21:02

Cyphax

Moderator LNX
Om met die argumenten te spelen is de functie getopt(), die maakt het wat makkelijker voor je. :)
man getopt ;)
Je kunt overigens ook argv[0] overslaan, da's de filename.

Wat je nu doet kan trouwens ook gewoon, als het werkt, dan werkt het. ;)

[ Voor 42% gewijzigd door Cyphax op 20-03-2006 11:17 ]

Saved by the buoyancy of citrus


  • hammerhead
  • Registratie: April 2000
  • Laatst online: 08:18
Andere optie is gebruik maken van Boost programing options. Moet zeggen dat die het leven wel erg makkelijk heeft gemaakt voor mij.

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zelfs zonder boost kan het vrij gemakkelijk:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>

int main(int argc, char ** argv)
{
    std::vector<std::string> options(argv, argv + argc);
    if (std::find(options.begin(), options.end(), "-c") != options.end())
    {
        std::cout << "optie -c is gezet" << std::endl;
    }
}

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.