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 14:33 | IT novinky

    Společnost Flipper Devices oznámila Flipper One. Zcela nový Flipper postavený od nuly. Jedná se o open-source linuxovou platformu založenou na čipu Rockchip RK3576. Hledají se dobrovolníci pro pomoc s dokončením vývoje (ovladače, testování, tvorba modulů).

    Ladislav Hagara | Komentářů: 0
    dnes 14:00 | Nová verze

    Vývojáři Wine oznámili vydání verze 2.0 knihovny vkd3d pro překlad volání Direct3D na Vulkan. Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 0
    dnes 11:33 | Nová verze

    Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 10.2 a 9.8. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Vypíchnout lze CLI AI asistenta goose. Podrobnosti v poznámkách k vydání (10.2 a 9.8).

    Ladislav Hagara | Komentářů: 0
    dnes 05:11 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 30 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 05:00 | Nová verze

    Byla vydána nová verze 7.0 svobodného open source redakčního systému WordPress. Kódové jméno Armstrong bylo vybráno na počest amerického jazzového trumpetisty a zpěváka Louise Armstronga (What A Wonderful World).

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Bezpečnostní upozornění

    V Drupalu byla nalezena a opravena kritická zranitelnost SA-CORE-2026-004 (CVE-2026-9082). Útočník může provádět libovolné SQL dotazy na webech používajících databázi PostgreSQL.

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | Komunita

    Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost HP.

    Ladislav Hagara | Komentářů: 3
    včera 13:33 | IT novinky

    O víkendu proběhla demopárty Outline 2026. Publikována byla prezentovaná dema. Upozornit lze na 16 bajtové, opravdu šestnáct bajtové, zvukově obrazové demo Wake Up! 16b (YouTube).

    Ladislav Hagara | Komentářů: 2
    včera 04:22 | Nová verze

    Byla vydána nová verze 9.5 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání a na YouTube.

    Ladislav Hagara | Komentářů: 0
    19.5. 21:00 | IT novinky

    Dnes a zítra probíhá vývojářská konference Google I/O 2026. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (26%)
    Celkem 1674 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: istringstream >> int

    31.7.2012 22:06 rastos | skóre: 63 | blog: rastos
    istringstream >> int
    Přečteno: 414×
    Tento program
    #include <sstream>
    #include <iostream>
    
    int main(int argc,char *argv[])
    {
            std::istringstream strm("foo");
            int n = -1;
            strm >> n;
            std::cout << "n is " << n <<std::endl;
            return 0;
    }
    
    Vypíše

    n is 0

    Je to bug v stdc++?

    Odpovědi

    1.8.2012 08:39 jekub
    Rozbalit Rozbalit vše Re: istringstream >> int
    Mám teď jenom VC6 a VC10. Obojí -1.

    Co vrací
    strm.fail()
    1.8.2012 09:06 jekub
    Rozbalit Rozbalit vše Re: istringstream >> int
    c++ (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
    také -1
    1.8.2012 15:32 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: istringstream >> int
    Ja som na to narazil na Slackware-i s gcc-4.7.1 cxxlibs-6.0.14.

    Na inom stroji s gentoo a gcc-4.4.3-r2 sa to chová správne.
    1.8.2012 15:26 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: istringstream >> int
    strm.fail() vrati 1
    1.8.2012 10:07 Marek
    Rozbalit Rozbalit vše Re: istringstream >> int
    Pravdebodobne je to feature, ze aj napriek fail() sa meni hodnota nacitavanej premennej.

    V G++ 4.6.3 (Ubuntu) vypise "n is 0". Vzdy treba testovat "fail(), resp. good()" bity tychto operacii.

    Program po uprave ide do else sekcie.
    #include <sstream>
    #include <iostream>
     
    int main(int argc,char *argv[])
    {
            std::istringstream strm("foo");
            int n = -1;
            strm >> n;
            if (!strm.fail()) {
                    std::cout << "n is " << n <<std::endl;
            }
            else {
                    std::cout << "n does not represent a number."  <<std::endl;
            }
            return 0;
    }
    
    1.8.2012 15:46 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: istringstream >> int
    Jeden problém je, že ten problém nie je v kóde mojom, ale ḱóde enblend-u. Druhý problém je, že sa to IMHO nechová správne, hoci sa to kedysi správne chovalo. A malo by sa to v stdc++ opraviť.
    1.8.2012 15:56 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: istringstream >> int
    Co konkrétně vám připadá nesprávné?
    1.8.2012 16:25 l4m4
    Rozbalit Rozbalit vše Re: istringstream >> int
    Standard lze číst tak, že v případě úspěchu se do proměnné přiřadí hodnota, nebo tak, že do proměnné se přiřadí hodnota v případě úspěchu. Což jsou obrácené implikace. Druhá by znamenala, že přiřazení v případě neúspěchu je v rozporu se standardem. První o této situaci neříká nic, tudíž by to byla věc implementace. IANAL.
    1.8.2012 16:34 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: istringstream >> int
    Já tam nevidím nic, co by zaručovalo zachování hodnoty, pokud dojde k chybě. Navíc pokud byste chtěl tu implikaci obracet, znamenalo by to, že ani při úspěchu se hodnota přiřadit nemusí, což je nesmysl. To už byste to musel brát jako ekvivalenci.
    1.8.2012 16:48 kuka
    Rozbalit Rozbalit vše Re: istringstream >> int
    Tak tim je jiste mysleno, ze se tam priradi spravna hodnota, ne jestli se tam vubec neco priradi nebo ze tam ma zustat puvodni hodnota. Pokud neni jednoznacne popsano, co se stane pri chybe, tak je treba se na hodnotu vzdy divat jako na nedefinovanou a to nejenom v tomto pripade.
    1.8.2012 17:29 l4m4
    Rozbalit Rozbalit vše Re: istringstream >> int
    Překvapivě -- pro někoho -- existují i rozhraní s definovaným chováním při chybě. Ale asi to nebude případ iostreamů v C++...
    1.8.2012 17:40 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: istringstream >> int
    Ne to překvapivé není. Ale pro řadu lidí je bohužel překvapivé, že když specifikace výslovně nevyžaduje, aby při chybě hodnota byla zachována, tak nelze spoléhat na to, že se nezmění.
    1.8.2012 18:56 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: istringstream >> int
    No ... svojím spôsobom máš pravdu. Ale pripadá mi to, ako keď sa právnik vykrúca.

    Ak mám int a hovorím, že chcem do neho niečo prečítať, tak buď do neho niečo prečítam alebo nie. A keď do neho neprečítam, tak to znamená, že som do neho nič nedal a neznamená to, že som do neho dal nulu.
    1.8.2012 19:23 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: istringstream >> int
    Vůbec ne. Uvědomte si, že v praxi může být implementace, která se bude snažit zachovávat hodnotu, méně efektivní než taková, která se na to vykašle. Pak je nesmysl zbytečně zneefektivňovat programy něčím, co specifikace nevyžaduje a tudíž na to program stejně nesmí spoléhat.

    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.