#4hlucheucho
V C sa goto dost casto pouziva na uvolnovanie zdrojov, v c++ je vo vecsine pripadov zbytocne (cest vynimkam ako stavove automaty a break cyklu ak si v switchi...).
Nahlásit jako SPAM
IP: 95.105.229.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
#6Kit
Niesu zbytocne. Samozrejme je dobre minimalizovat pouzivanie goto/break/continue. Ale nie za kazdu cenu, niekedy je goto/break/continue prehladnejsie ako alternativy.
Nahlásit jako SPAM
IP: 95.105.229.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
#9vitamin
Procedurální záležitosti raději přenechávám systémovým knihovnám. Lexery dělám jen výjimečně, na ty se continue občas hodí. Ve vyšších vrstvách k tomu obvykle není důvod.
Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
#12Kit
myslim, že tohle je detail... už vidim, že tam někdo bude sypat rýži :)
pokud bych to měl řešit přes unicode, tak bych to jednoduše převedl na číslo a měl tam kontrolu na min/max hodnotu (protože unicode znaky to převede též na číslo podle unicode table)... pokud uživatel zadá něco jinýho než číslice, tak jeho problém...
wchar_t* value = L"١٢٣٤٥٦٧٨٩";
int num = _wtoi(value);
if (num > 99 && num < 1000) {
// podporujeme pouze hodnotu mezi 100-999
}
Trochu jsem se na to podíval a šlo by to řešit takto (možná to není úplně čistý)... podporuje to ti pole unicode znaků... ale spíš bych nepoužíval unicode vůbec
bool isNumber(wchar_t* input)
{
if (!input || *input == '\0') return false;
bool valid = true;
int i = 0;
do {
wchar_t* ch = (input + i);
if (*ch == '\0') break;
int dec = _wtoi(ch);
valid &= (dec == 0x7FFFFFFF || (*ch >= '0' && *ch <= '9')) ?
(*ch >= '0' && *ch <= '9') : false;
i++;
} while (valid);
return valid;
}