121
Vývoj / Re:Ako ukladáte binárne dáta a texty v C++?
« kdy: 06. 10. 2020, 15:34:41 »Legitimní nevím. Ale ve vrstevnatém legacy kódu existuje spousta situací, kdy funkce bere std::string a není jasné jestli nuly uvnitř snese nebo ne.Raději ani nebudu počítat, kolikrát jsem něco takového viděl. Občas té obalované Cčkové knihovně ani ten pointer + délka předat nejde.
Skutečně existují situace, kdy je nulový bajt legitimní součástí řetězce a zároveň funkce nepřijímá pointer + délku, ale jen pointer a čeká, že bude ukončený nulovým bajtem?
Citace
Podle mého je využití std::string pro binární data v pořádku. String a char v C++ totiž nejsou textový řetězec a znak (byť se tak často používají), ale právě řetězec bajtů resp. bajt.
Typický příklad : Mám nějakou síťovou nebo serializační vrstvu třetí party. Jsou tam metody co zapisují std::string. V dokumentaci samozřejmě není, jestli to tu nulu snese nebo ne.
Netvrdím že je to dobře. Jen že je s tím třeba počítat, protože se to vyskytuje nepříjemně často. A dualita std::stringu k tomuhle použití navíc dost svádí.
Pokud se predava vsude jako kontejner std::string, tak nevim, jak by se k tomu strlenu clovek dostal. Krehky neni kontejner, krehke je michani C a C++