Svmmarivm
Introitvs est confinivm per qvod mvndvs in programma intrat, et mvndvs specificationes non observat. Haec lectio docet legere sine fidvcia: versvs integros per std::getline legere et versvm vacvvm vitare qvi apparet cvm id cvm >> miscetvr; statvm flvxvs inspicere et per evm tres condiciones distingvere qvas lectio Introitvs, exitvs et errores non nisi confvsas vidit (datvm invalidvm, nvmervm qvi non capitvr et finem datorvm); se recipere post lectvram irritam per clear et ignore; et, vt modo tvtissimo, qvodqve datvm vt textvm legere et per std::from_chars convertere, ita vt solvm accipiatvr si conversio textvm totvm consvmpsit. Desinit in fvnctione readInt, cvm pacto svo, qvam reliqvvs cvrsvs itervm adhibere potest.
Proposita discendi
- Versvs integros per
std::getlinelegere, explicare cvrgetlineqvod lectvram per>>seqvitvr versvm vacvvm reddat, et id perstd::wsvitare. - Statvm flvxvs post lectvram per
fail()eteof()inspicere, et per evm distingvere datvm invalidvm, nvmervm qvi in genere svo non capitvr et finem introitvs. - Circvitvm legendi scribere qvi se ab introitv invalido per
clearetignorerecipiat, et qvi finiatvr si introitvs deficit. - Nvmervm vt textvm lectvm per
std::from_charsvalidare, postvlando vt nvllvs error sit et vt catena tota consvmatvr, et validationem in fvnctionibvs cvm pacto inclvdere.
Confinivm, itervm
Lectio Introitvs, exitvs et errores tria facta de std::cin >> n statvit: lectvra consistit, evm non consvmens, in primo charactere qvi nvmervm continvare non potest; si nvllvm legere potest, flvxvs in statv erroris manet et omnis lectvra seqvens nihil agit; et if (std::cin) sinit scire nvm aliqvid defecerit. Lectio Circvitvs addidit condicionem while (std::cin >> value) finiri tam si introitvs deficit qvam si datvm invalidvm advenit. Atqvi his instrvmentis programma deprehendit aliqvid male cessisse, sed nescit qvid, neqve alivd facere potest qvam cedere.
Haec lectio a principio designationis proficiscitvr, illo programmationis defensivae in confinio: omne datvm qvod intrat validatvr privsqvam adhibeatvr, et programma qvod id validat datvm invalidvm, qvod correctionem admittit (itervm id petere, id transilire, de eo nvntiare), a fine datorvm distingvit, qvi eam non admittit. Qvod si ita est, tria reqvirvntvr: datvm legere vt scriptvm est, id est versvm; scire cvr lectvra defecerit; et flvxvi facvltatem legendi reddere.
Argvmentvm oneratvr…