Gå til innhold

[Løst]argv[] med " " 's


Anbefalte innlegg

lager ett program som skal behandle filepath's i argv[] men problemet er at for hvert mellomrom så blir det ett nytt 'argument'

 

hvordan kan man gjøre at argumentene blir splittet med "" isteden for mellomrom?

(ex: converter.exe "foo foo foo" "bar bar bar"

skal bli total 2 argumenter, ikke 5) <<Snakker ikke om Argv[0] !! >>

(eller lignende løsning)

 

(nå som jeg tenker litt over det, kunne muligens lage en string for hver " og += till neste argv med " ... men det ville vell vært "dirty code" og ikke "den riktige måten og gjøre det på" :hmm: )

Endret av Hans_Henrik
Lenke til kommentar
Videoannonse
Annonse

Iallefall i linux så vil argumentene du hiver inn med "" bli satt inn som ett argument i argv[].

Foreksempel:

makeinitramfs --modules "ext3 reiserfs"

vil bli:

argv[1] = "--modules"

argv[2] = "ext3 reiserfs"

 

Nå programmerer jeg lite C/C++ i windows, men det _BURDE_ være samme mekanisme her.

Hvis det ikke er det så må du nok mekke en string som du legger sammen argv[] i, er eneste måten jeg kan se at det skulle funke på.

Lenke til kommentar
<snip>

Nå programmerer jeg lite C/C++ i windows, men det _BURDE_ være samme mekanisme her.

<snip>

 

Det er samme mekanismen i windows også.

 

Jeg sender med "foo foo foo" "bar bar bar" og får da ut to strenger ("foo foo foo" og "bar bar bar")

 

Testkoden:

#include <iostream>

int main( int argc, char *argv[ ], char *envp[ ] )
{
for (int i = argc -1; i>0;i--)
{
	std::cout << argv[i] << std::endl;
}

return 0;
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...