10. juli 2003 - 18:10
Der er
8 kommentarer og 1 løsning
validering af CSTRING
hvordan kan jeg kontrollere om min variable CString har dette format 00000.0000
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Jeg går ud fra du mener xxxxx.xxxx, hvor x er et tal mellem 0 og 9 bool IsvalidFormat(const CString& str) { int length = str.GetLength(); if(length != 10) return false; for(int i=0; i<5; ++i) if(str[i] < '0' || str[i] > '9') return false; if(str[i] != '.') return false; for(i=6; i<length; ++i) if(str[i] < '0' || str[i] > '9') return false; return true; }
jpk -> tillader C++ noget med regularexpression validation? Ville ellers være oplagt at bruge her :-)
regular expressions er vist noget man selv skal hente i C++.
jpk> Jeg formoder at du mener: if(str[i] <= '0' || str[i] >= '9') return false;
Og jeg ville nok lave den som (hvis jeg altså brugte CString): bool IsvalidFormat(const CString& str) { int length = str.GetLength(); if(length != 10) return false; if(str[5] != '.') return false; for(int i=0; i<10; i++) if(i != 5) if(!isdigit(str[i])) return false; return true; }
Af to grunde: - når nu der er en isdigit så kan man jo ligeså godt bruge den - brug af i efter afslutning af for(int i ...) virker fint i bl.a. MS VC++ men er ikke validt standard C++ (scope af i slutter når løkken afslutter)
arne >> nej, jeg mener ikke: if(str[i] <= '0' || str[i] >= '9') return false; men som jeg skrev...
Du har sgu da ret. Min fejl. Jeg undskylder.
baltazar> Tid at lukke spørgsmålet ?
Kurser inden for grundlæggende programmering