tilfeldignavn Skrevet 3. november 2004 Skrevet 3. november 2004 Hai! Jeg trenger en kode for å sjekke at et telefonnummer kun inneholder tall og ikke tegn eller bokstaver. Ønsker å gjøre dette med en bool-funksjon (true eller false). Noen som har et tips eller to..? På forehand takk.
Dead_Rabbit Skrevet 3. november 2004 Skrevet 3. november 2004 Det finnes jo en del slike is[tegntype]() funksjoner som du kan sjekke ut. Eller så kan du i "verstefall" lage deg din egen lille is[et eller annet]() funksjon. Bruke en enum til å ramse opp de du vil/ikke vil ha med?
tilfeldignavn Skrevet 3. november 2004 Forfatter Skrevet 3. november 2004 Ok. Vil helst benytte en bool-funksjon, og i den forbindelse retunere en "1" eller "0", "true" eller "false"..
Peter Skrevet 3. november 2004 Skrevet 3. november 2004 (endret) Ganske fersk selv, men tror dette skulle funke... bool isInt(std::string str) { unsigned int i; for(i=0;i<str.length();i++) { if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) return false; } return true; } Endret 3. november 2004 av Nazgul
lodott Skrevet 5. november 2004 Skrevet 5. november 2004 (endret) Ganske fersk selv, men tror dette skulle funke... bool isInt(std::string str) { unsigned int i; for(i=0;i<str.length();i++) { if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) return false; } return true; } Den vil alltid returnere true. bool isInt(std::string str) { bool temp = true; for(int i=0;i<str.length();i++) { if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) temp = false; } return temp; } Noe sånt...har ikke testet den if`en der... Endret 5. november 2004 av lodott
iobas Skrevet 5. november 2004 Skrevet 5. november 2004 (endret) Ganske fersk selv, men tror dette skulle funke... bool isInt(std::string str) { unsigned int i; for(i=0;i<str.length();i++) { if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) return false; } return true; } Den vil alltid returnere true. bool isInt(std::string str) { bool temp = true; for(int i=0;i<str.length();i++) { if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) temp = false; } return temp; } Noe sånt...har ikke testet den if`en der... gratulerer lodott! du pastet AKKURAT den samme versjonen bare at du gjorde den treigere! jeg mener, hvorfor skal man returnere hvis man finner noe som ikke er et tall? bedre å loope gjennom resten av stringen bare for å bruke litt ekstra tid, i hvertfall når du får med en ekstra temp variabel på kjøpet også, syns du ikke lodott? dermed overrekker jeg deg "det er bedre å holde kjeft å la folk tro du er dum enn å åpne kjeften og fjerne alle tvil"-prisen. Endret 5. november 2004 av iobas
lodott Skrevet 5. november 2004 Skrevet 5. november 2004 dermed overrekker jeg deg "det er bedre å holde kjeft å la folk tro du er dum enn å åpne kjeften og fjerne alle tvil"-prisen. Hehehe beklager så mye. Den fortjente jeg! Jeg blingset og fikk ikke med meg at han hadde skrevet "return false" midt i der.
kjetil7 Skrevet 6. november 2004 Skrevet 6. november 2004 (endret) Det er også unødvendig med all castingen til int: bool is_digits(const std::string & str) { std::string::const_pointer p = str.c_str(); while(0 != *p) { if(*p < 0x30 || *p > 0x39) return false; ++p; } return true; } // eller med locales.. bool is_digits(const std::string & str, const std::locale & loc) { std::string::const_pointer p = str.c_str(); while(0 != *p) { if(!std::isdigit(*p++, loc)) return false; } return true; } Endret 6. november 2004 av kjetil7
søppel Skrevet 6. november 2004 Skrevet 6. november 2004 Vet ikke i hvilken sammenheng dette skal brukes, men det kan eventuellt være en idé å ta hensyn til om brukeren taster inn mellomrom i telefonnummeret. (400 4848 3 :])
kjetil7 Skrevet 6. november 2004 Skrevet 6. november 2004 Sant nok . Kanskje antall siffer også? Og hva med +47? r-r-r-eeg *host* - ex
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå