[QGHG-it-dev-list] Zadatak 35 - hardening I/O funkcija

Marko Vojinovic vmarko at ipb.ac.rs
Wed Nov 30 15:21:09 CET 2022


Implementirati f-je

   string encode_string_for_xml( string s )
   string decode_string_from_xml( string s )

Input: string s koji treba kodirati/dekodirati.
Output string koji je kodiran/dekodiran.

Kada snimamo simplicijalni kompleks u .xml fajl, kao podaci se snimaju i ime kompleksa i vrednosti boja, koji mogu biti proizvoljni stringovi, sa proizvoljnim karakterima u sebi. XML standard propisuje neke od karaktera kao specijalne/rezervisane za notaciju u .xml fajlovima, i ako se ti karakteri pojave u nasem stringu, moze doci do korupcije strukture .xml fajla (tipican primer su karakteri < i >). Zato je pre zapisivanja stringa u fajl potrebno "kodirati" string, tako sto ce se svi ti "nezgodni" karakteri escape-ovati (XML standard propisuje kako to moze da se uradi za svaki karakter). Slicno, kada se string ucitava iz fajla, potrebno je "dekodirati" ga, tj. zameniti sve escape-ovane karaktere njihovim originalima.

Dakle, ove dve funkcije treba implementirati tako da rade taj posao. Jasno, f-je treba da budu inverzne jenda drugoj. Ne znam da li se u XML standardu karakter za razmak (" ") smatra specijalnim ili ne, ali eksperimentalno sam otkrio da nase f-je za citanje i pisanje ne trpe pojavu razmaka, pa i njega obavezno treba escape-ovati (moze kao non-breakable space ili kakogod).

Ove funkcije zatim treba upotrebiti direktno unutar f-ja

   save_complex_to_xml_file()
   read_complex_from_xml_file()

svuda gde treba, tako da se svi stringovi snimaju i ucitavaju kroz te funkcije.

Implementaciju f-ja staviti u fajlove input-and-output.cpp i .hpp.

Testiranje se vrsi direktnom proverom za raznorazne stringove sa specijalnim karakterima, kao i uzastopnom primenom obe funkcije (sto treba uvek da vrati pocetni string).

:-)
Marko


Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail:    vmarko at ipb.ac.rs




More information about the QGHG-it-dev-list mailing list