C ++ pasningsalternativer til kjør

stemmer
3

Hvordan passere du alternativer til en kjørbar? Er det en enklere måte enn å gjøre alternativene boolean argumenter?

EDIT: De to siste svar har foreslått å bruke argumenter. Jeg vet jeg kan kode en gjennomførbar løsning sånn, men jeg vil heller ha dem være alternativer.

EDIT2: Per forespørsler om avklaring, vil jeg bruke dette enkelt eksempel: Det er ganske lett å håndtere argumenter fordi de automatisk bli analysert i en matrise.

./printfile file.txt 1000

Hvis jeg ønsker å vite hva navnet på filen brukeren ønsker å skrive ut, få tilgang jeg det via argv [1].

Nå om hvordan denne situasjonen:

./printfile file.txt 1000 --nolinebreaks

Brukeren ønsker å skrive ut filen uten linjeskift. Dette er ikke nødvendig for at programmet skal kunne kjøre (som filnavn og antall linjer som skal skrives ut er), men brukeren har muligheten til å bruke hvis hvis han / hun ønsker. Nå kunne jeg gjøre dette ved hjelp av:

./printfile file.txt 1000 true

Bruken prompt vil informere brukeren om at det tredje argumentet brukes til å avgjøre om du vil skrive ut filen med linjeskift eller ikke. Men synes dette ganske klønete.

Publisert på 24/09/2008 klokken 02:47
kilden bruker
På andre språk...                            


8 svar

stemmer
2

Jeg bruker to metoder for å passere informasjon:

1 / Bruken av kommando-argumenter, som er enklere å håndtere med spesifikke biblioteker slik som getargs.

2 / Som systemvariabler, ved hjelp av getenv.

Svarte 24/09/2008 kl. 02:50
kilden bruker

stemmer
11

Kommandolinjeargumenter er veien å gå. Det kan være lurt å vurdere å bruke Boost.ProgramOptions å forenkle denne oppgaven.

Svarte 24/09/2008 kl. 02:51
kilden bruker

stemmer
0

Spørsmålet er ikke super klar på sammenhengen og bare hva du prøver å gjøre - du mener kjører en kjørbar innenfra et C ++ program? Det finnes flere standard C bibliotekfunksjoner med navn som execl (), execv (), execve () ... som tar valgene som strenger eller peker til en rekke strenger. Det er også system () som tar en streng som inneholder hva du vil bli skrive på en bash prompt, alternativer og alle.

Svarte 24/09/2008 kl. 02:55
kilden bruker

stemmer
1

Pax har rett ideen her.

Hvis du trenger mer grundig toveis kommunikasjon, åpne prosessen med rør og sende ting til stdin / lytte på stdout.

Svarte 24/09/2008 kl. 03:02
kilden bruker

stemmer
-1

Du kan sette alternativer i en ini-fil og bruke GetPrivateProfileXXX API for å lage en klasse som kan lese hva slags program alternativer du leter etter fra INI.

Du kan også opprette en interaktiv skall for appen endre visse innstillinger i sanntid.

EDIT: Fra dine endringer, kan ikke du bare analysere hvert alternativ på jakt etter spesielle nøkkelord i forbindelse med det alternativet som er "valgfri"?

Svarte 24/09/2008 kl. 03:03
kilden bruker

stemmer
1

Du kan også bruke Window er Postmessage () -funksjonen. Dette er svært nyttig hvis den kjør du vil sende alternativene til kjører allerede. Jeg kan legge ut noen eksempelkode hvis du er interessert i denne teknikken.

Svarte 24/09/2008 kl. 03:08
kilden bruker

stemmer
4

Du synes å mene at det er noen grunnleggende forskjell mellom "alternativer" som starter med " --" og "argumenter" som ikke gjør det. Den eneste forskjellen ligger i hvordan du analysere dem.

Det kan være verdt din tid til å se på GNU s getopt()/ getopt_long()alternativ parser. Den støtter passerer argumenter med alternativer som --number-of-line-breaks 47.

Svarte 24/09/2008 kl. 03:16
kilden bruker

stemmer
0

Jeg liker popt bibliotek. Det er C, men fungerer fint fra C ++ også.

Det synes ikke å være plattform skjønt. Jeg fant ut da jeg måtte hacke ut min egen API-kompatibel versjon av den for en Windows-porten på noen Linux-programvare.

Svarte 24/09/2008 kl. 04:13
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more