abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:44 | Pozvánky

    Přemýšlíte, jak začít prázdniny? Už v úterý 1. července se bude konat Virtuální Bastlírna, tedy online setkání bastlířů, techniků, vědců i akademiků, kde se ve volné diskuzi probírají novinky ze světa techniky, ale i jiných zajímavých témat.

    Za poslední měsíc jsme byli svědky plamenů několika raket. Zatímco malá raketa od Hondy se úspěšně vznesla a opět přistála, raketa od SpaceX se rozhodla letět všemi směry najednou. Díkybohu méně … více »
    Uprdkávač | Komentářů: 0
    včera 23:44 | Komunita

    Linus Torvalds zmínil, že souborový systém Bcachefs zřejmě odstraní z mainline Linuxu v začleňovacím okně pro vydání 6.17. Kent Overstreet mu totiž posílá kód s novou funkcionalitou i pro začlenění do kandidátů na vydání, kdy očekává pouze opravy chyb. Ken Overstreet byl již dříve z vývoje vyloučen kvůli konfliktní komunikaci.

    Fluttershy, yay! | Komentářů: 0
    27.6. 11:55 | IT novinky

    Ministerstvo průmyslu a obchodu propaguje Microsoft. Ten ve spolupráci s Ministerstvem průmyslu a obchodu spouští AI National Skilling Plan v ČR. "Iniciativa Microsoftu přináší konkrétní a praktickou podporu právě tam, kde ji nejvíc potřebujeme – do škol, firem i veřejné správy.", říká ministr průmyslu a obchodu Lukáš Vlček.

    Ladislav Hagara | Komentářů: 25
    27.6. 10:55 | Zajímavý projekt

    Jste český ISP? Vyplněním krátkého dotazníku můžete pomoci nasměrovat vývoj nové generace routerů Turris Omnia [𝕏].

    Ladislav Hagara | Komentářů: 4
    27.6. 01:33 | IT novinky

    Celkové tržby společnosti Canonical za rok 2024 byly 292 milionů dolarů (pdf). Za rok 2023 to bylo 251 milionů dolarů.

    Ladislav Hagara | Komentářů: 1
    27.6. 01:22 | Nová verze

    Byla vydána verze 1.88.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    27.6. 01:11 | Nová verze

    Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 6.17. Mimo jiné aktualizuje Tor Browser (14.5.4) a opravuje několik chyb.

    Fluttershy, yay! | Komentářů: 0
    26.6. 21:11 | Nová verze Ladislav Hagara | Komentářů: 0
    26.6. 13:11 | IT novinky

    Město Lyon posiluje svou digitální suverenitu a postupně nahrazuje software od společnosti Microsoft bezplatnými alternativami, zejména OnlyOffice pro kancelářské aplikace a Linux a PostgreSQL pro systémy a databáze.

    Ladislav Hagara | Komentářů: 9
    26.6. 11:44 | Zajímavý projekt

    Evropská občanská iniciativa Stop Destroying Videogames se snaží o to, aby vydavatelé, kteří spotřebitelům v Evropské unii prodávají videohry nebo na ně udělují licence, měli povinnost tyto hry ponechat ve funkčním (hratelném) stavu i po ukončení podpory ze své strany. Podpořit podpisem tuto iniciativu můžete v Systému pro online sběr podpisů.

    trekker.dk | Komentářů: 5
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 330 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: c++ memory stream

    22.12.2018 23:12 rastos | skóre: 63 | blog: rastos
    c++ memory stream
    Přečteno: 504×
    Chcem si napísať knižnicu v C++, ktorej súčasťou by malo byť niečo ako javovské ByteArrayOutputStream. Potrebujem pomocou tej triedy zapisovať int8_t, int32_t, int64_t a char[] (aj obsahujúci nuly). Práve kvôli tým nulovým bajtom, ktoré sa tam môžu vyskytnúť, nevyhovuje ostringstream (nechcem ot znásilňovať a dúfať, že ostringstream bude správne pracovať aj s nulovými bajtami). Mal som pocit, že riešením by mohlo byť použitie streambuf - ale nejak sa v tom strácam. Musím si urobiť vlastnú triedu, ktorá dedí zo streambuf a sama si manažuje buffer? Alebo by to streambuf mal robiť sám? Alebo som úplne vedľa?

    Poznámka: nechcem použiť žiadnu ďalšiu knižnicu okrem STL.

    Řešení dotazu:


    Odpovědi

    23.12.2018 03:29 MadCatX | skóre: 28 | blog: dev_urandom
    Rozbalit Rozbalit vše Re: c++ memory stream
    Možná hledáš něco jako tohle (https://artofcode.wordpress.com/2010/12/12/deriving-from-stdstreambuf/) ale podle toho, jak přesně to má fungovat bych se zamyslel, zda se ti nevyplatí ten buffer management naimplementovat ručně.
    23.12.2018 10:26 Jardík
    Rozbalit Rozbalit vše Re: c++ memory stream
    Do ostringstream můžeš char[] normálně zapsat i s nulovými byte. Proč bys nemohl?
    ostream& strm;
    
    char mojepole[] = {0,1,0,2};
    strm.write(mojepole, sizeof(mojepole));
    
    A operátor <<, který výstupy formátuje (tam to asi nefunguje? protože se provede decay na char* a tam se očekává nulou ukončený string?), bych v tomto případě vůbec nepoužíval. Protože zapisuješ binární data, nejedná se o čitelný textový soubor, proto je veškeré formátování a s tím spojené problémy (závislost na bindnutém locale) blbost řešit.
    Řešení 1× (Jardík)
    Jardík avatar 24.12.2018 16:28 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: c++ memory stream
    Dovolím si ještě přiložit celý zkompilovatelný příklad pro tazatele.
    #include <iostream>
    #include <sstream>
    
    using namespace std;
    
    int main()
    {
        ostringstream strm;
        char mojepole[] = {0, 1, 0, 2};
        strm.write(mojepole, sizeof(mojepole));
        string s = strm.str();
    
        cout << "string length: " << s.size() << endl;
        for (char c : s)
        {
            cout << int(c) << ", ";
        }
        cout << endl;
    
        return 0;
    }
    
    Výstup je
    string length: 4
    0, 1, 0, 2,
    
    Věřím v jednoho Boha.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.