Avatar billede kulashaker Nybegynder
18. november 2004 - 10:47 Der er 13 kommentarer og
1 løsning

string: komma til punktum

Hej,

Jeg har brug for en C++ funktion der kan finde et komma i en string og derefter erstatte dette komma med et punktum.

Kan forestille mig at jeg skal bruge "object".replace() til at erstatte med, men hvordan finder jeg frem til kommaet?

På forhånd tak,
CC
Avatar billede arne_v Ekspert
18. november 2004 - 10:49 #1
char array eller STL string eller MFC CString eller Borland AnsiString ?
Avatar billede arne_v Ekspert
18. november 2004 - 10:50 #2
char array:

*strchr(s,',') = '.';

burde gøre det (du bør nok teste om strchr returnerer NULL inden du forsøger at sætte ...)
Avatar billede kulashaker Nybegynder
18. november 2004 - 10:51 #3
Borland Ansistring.. :)
Avatar billede arne_v Ekspert
18. november 2004 - 10:56 #4
Prøv:

s[s.Pos(",")] = '.';

men jeg er ikke sikker
Avatar billede kulashaker Nybegynder
18. november 2004 - 11:07 #5
Hej igen,

Så vidt jeg kan se er ovenstående tiltænkt et array?

Har prøvet, men compileren er ikke glad for det..
Avatar billede arne_v Ekspert
18. november 2004 - 11:13 #6
Jo men jeg formoder da at Borland AnsiString har [] operator.

Hvis ikke det virker så må du vente på at der kommer en forbi som
faktisk bruger Borland C++ Builder.
Avatar billede kulashaker Nybegynder
18. november 2004 - 11:19 #7
ok, jeg tror lige jeg vil rode lidt videre med det. Jo, [] operatoren er der, men indtil videre har jeg data i en string og ikke et array.

Muligvis bare mig der har misforstået noget.. :/

Jeg skriver tilbage hvis jeg får "s[s.Pos(",")] = '.';" til at virke, tak for hjælpen indtil videre.
Avatar billede kulashaker Nybegynder
18. november 2004 - 14:00 #8
Hej arne_v,

Well, så fik jeg rodet lidt videre med det.. og har fået din "s[s.Pos(",")] = '.';"
til at virke.

Hvordan giver jeg dig de 30 point? :)
CC
Avatar billede arne_v Ekspert
18. november 2004 - 14:04 #9
jeg ligger et svar
Avatar billede kulashaker Nybegynder
18. november 2004 - 14:09 #10
ok, accepterer.
Avatar billede rhn Nybegynder
18. november 2004 - 15:07 #11
Det er netop, fordi du har data i en string, at du kan bruge funktionen pos til at returnere det korrekte index.

String s = "12,3456";
s[s.Pos(",")] = '.';

s indeholder nu "12.3456", så svaret fra arne_v er fuldstændigt korrekt.

Bemærk iøvrigt, at hvis din streng ikke indeholder et "," så vil ovenstående kode fejle, fordi pos returnerer 0.
Avatar billede kulashaker Nybegynder
18. november 2004 - 20:30 #12
Hej,

Tak for den ekstra forklaring rhn. Jeg er ikke i tvivl om at svaret fra arne_v er korrekt, men jeg havde lidt problemer med selv at forstå [] notationen i forbindelse med en string. Men det gør jeg nu :)

/CC

/CC
Avatar billede rhn Nybegynder
18. november 2004 - 21:07 #13
Velbekomme. :-)

Jeg er nybegynder her på Eksperten, og glemte at opdatere siden før jeg sendte min kommentar. Konstante afbrydelser gjorde desværre min forklaring (meget) forsinket, og så vidste jeg ikke, hvordan jeg skulle fjerne min kommentar igen. Sorry.
Avatar billede kulashaker Nybegynder
18. november 2004 - 21:13 #14
Hehe, så er vi 2 i samme klub. Se bare mit svar med dobbelt /CC. Meget rutineret :p

hehe, well - alle har vel været nybegyndere på et eller andet tidspunkt :-)

/CC
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester