11. december 2003 - 23:40
Der er
12 kommentarer og 1 løsning
Test indput af string!
Hvordan tester jeg om en variabel er korrekt formateret? Variablen skal testes om den ser således ud : ######-#### (# = et tal) altså som et cpr-nummer.
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
11. december 2003 - 23:47
#1
isdigit() fra ctype.h i en løkke kunne være en start.
11. december 2003 - 23:48
#2
Prøv noget a la: char s[12]; // indlæs s for(int i=0;i<11;i++) { if(i==6) if(s[i]!='-') cout << fejl << endl; else if(!isdigit(s[i])) cout << fejl << endl; }
11. december 2003 - 23:49
#3
f.ex: int i; char Nr[12]; GetNr(Nr); bool IsOk = true; for(i = 0; i < 6; i++) if(!isdigit(Nr[i])) IsOk = false; if(Nr[6] != '-') IsOk = false; for(i = 7; i < 11; i++) if(!isdigit(Nr[i])) IsOk = false;
12. december 2003 - 00:11
#4
hmm ... jeg har bygget programmet så at den bruger type string og ikke char.
12. december 2003 - 00:12
#5
bool test_cpr(string c) { char s[12]; s = c; for(int i=0;i<11;i++) { if(i==6) if(s[i]!='-') return false; else if(!isdigit(s[i])) return false; } return true; } // FRA MAIN do { cout<< "Indtast cpr-nummer: "; getline(cin, cpr); } while(!(test_cpr(cpr)));
12. december 2003 - 00:13
#6
Jeg tror slet ikke at du behøver s men at du bare kan bruge c[i].
12. december 2003 - 00:14
#7
undskyld for den dårlige copy/paste der.. Er der muligheder for at jeg kan gøre det samme på en string variabel eller skal jeg ombygge mit program så cpr-nummeret bliver typen char all-over?
12. december 2003 - 00:17
#8
Jeg mener at du kan teste på c[i] direkte. bool test_cpr(string c) { for(int i=0;i<11;i++) { if(i==6) if(c[i]!='-') return false; else if(!isdigit(c[i])) return false; } return true; }
12. december 2003 - 00:18
#9
Måske skulle metoden starte med at checke om længden er 11.
12. december 2003 - 00:55
#10
takker arne :D Nu har jeg fået det til at virke :D men hvorfor kan jeg ikke bruge : if(strlen(c) > 11) return 0; til at teste om strengen er længere end den må være? (jeg har included cstring.h) [C++Error] : Could not find a match for 'std::strlen(std::basic_string<char,std::char_traits<char>,std::allocator<char> >)'.
12. december 2003 - 02:20
#11
Brug strlen(c.c_str()) string har ikke en cast operator der konverterer til char* db
12. december 2003 - 07:52
#12
Jeg ville bruge: if(c.length()!=11)
12. december 2003 - 11:48
#13
Tak for hjælpen :)
Kurser inden for grundlæggende programmering