Ad argvmentvm transi
Topos Uranos

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

  1. Versvs integros per std::getline legere, explicare cvr getline qvod lectvram per >> seqvitvr versvm vacvvm reddat, et id per std::ws vitare.
  2. Statvm flvxvs post lectvram per fail() et eof() inspicere, et per evm distingvere datvm invalidvm, nvmervm qvi in genere svo non capitvr et finem introitvs.
  3. Circvitvm legendi scribere qvi se ab introitv invalido per clear et ignore recipiat, et qvi finiatvr si introitvs deficit.
  4. Nvmervm vt textvm lectvm per std::from_chars validare, 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.