char to int (C++)

Tags:    c++

Hey fellow udviklere.
Jeg har i lang tid brugt denne simple metode til at konvetere chars til ints:
Fold kodeboks ind/udC++ kode 

Det virker da c = 53, og '0' = 48:
53 - 48 = 5.

Men jeg er nu kommet i tvivl om denne metode er sikker, specielt fordi at jeg ikke har set den brugt andre steder. Hvad synes i? Og hvilke metoder bruger i selv?



9 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Hej,

Brug "strtol"-funktionen.

Jeg erindrer at der er et-eller-andet problem med "atoi" men kan ikke huske hvad. Måske en posix-standard eller andet som den ikke er en del af.





Du kan vist benytte en metode der hedder atoi()
Fold kodeboks ind/udC++ kode 

Du må dog ikke hænge mig op på det, da jeg ikke leger med c++ normalt :P

se evt. mere her - http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

Hvis jeg skulle foretrække noget, vil jeg helst benytte en metode fra et bibliotek til den slags opgaver, da de ofte er testet meget mere grundigt, end hvis jeg selv skulle lave en converter :)



Indlæg senest redigeret d. 27.02.2012 19:20 af Bruger #4487
Jeg tror ikke at der er nogen garanti for at tallene har fortløbende numre og at de starter med '0', og at der dermed er nogen garanti for at metoden virker.

Men i praksis, er der ikke rigtig nogen risiko ved at bruge metoden.



Martin, der er, så vidt jeg ved, ingen garanti for at tegnsættet i der benyttes er ASCII.



Nick Norman, din kode virker - Jeg har set lignende eksempler før. Ellers er der atoi, som vidst er ret bredt understøttet.



Bertel, tallene har fortløbende numre, eftersom det er ascii-værdier der regnes med :)



Det er ellers min opfattelse, og forestiller mig også at det er der navnet kommer fra, men alright :)




Brug "strtol"-funktionen.

Jeg erindrer at der er et-eller-andet problem med "atoi" men kan ikke huske hvad. Måske en posix-standard eller andet som den ikke er en del af.

Jeg mener også at have hørt noget om at atoi() er "farlig"


Martin, der er, så vidt jeg ved, ingen garanti for at tegnsættet i der benyttes er ASCII.

Har du selvfølgelig ret i. Vil sætte mig til at gennemgå de forskellige tegnsæt for at spotte en connection.

Tak for svarene everybody ;)



Det er nærmest kun UTF og ASCII der bliver brugt i de fleste vestlige programmer og da UTF inkluderer ASCII som et subset, med samme char pladser, burde din metode være fornuftig nok.

Edit: Men strol ser dog mere tilregnelig ud :)



Indlæg senest redigeret d. 29.02.2012 09:24 af Bruger #11328
t