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í
×
    včera 19:44 | Nová verze

    Byla vydána verze 9.1 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a informačním videu.

    Ladislav Hagara | Komentářů: 1
    včera 17:44 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.

    Ladislav Hagara | Komentářů: 1
    včera 17:22 | IT novinky

    Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.

    Ladislav Hagara | Komentářů: 0
    včera 12:00 | IT novinky

    Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.

    Ladislav Hagara | Komentářů: 3
    18.11. 23:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

    Ladislav Hagara | Komentářů: 0
    18.11. 23:22 | Komunita

    Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.

    Ladislav Hagara | Komentářů: 0
    18.11. 19:44 | Nová verze

    Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    18.11. 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 13
    18.11. 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 1
    18.11. 04:11 | Nová verze

    Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (15%)
     (17%)
    Celkem 371 hlasů
     Komentářů: 17, poslední včera 21:57
    Rozcestník

    Dotaz: C++ a fstream

    lobodpav avatar 16.5.2005 21:01 lobodpav | skóre: 8 | Ostrava
    C++ a fstream
    Přečteno: 2399×
    Zdravím. Mám drobný problém, se kterým si nevím rady. Potřebuji otevřít soubor pro čtení i pro zápis a pokud neexistuje, tak jej vytvořit. Kód v příloze by to měl provést, ale soubor pouze vytvoří a nic do něj nezapíše...
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main() {
      // otevreni pro cteni i zapis
      fstream *dbFile = new fstream("file.txt", ios::in | ios::out | ios::binary);
      if (!dbFile->is_open()) { // soubor nelze otevrit
        cout << "Creating file" << endl;
        dbFile->open("file.txt", ios::out | ios::binary); // vytvoreni souboru
        if (!dbFile->is_open()) {
          cout << "Cannot create file" << endl;
          return 0;
        }
        dbFile->close();
        // otevreni pro cteni i zapis
        dbFile->open("file.txt", ios::in | ios::out | ios::binary);
        if (!dbFile->is_open()) {
          cout << "Cannot open file after create" << endl;
          return 0;
        }
        if (!dbFile->write("AABB", 4))
          cout << "Cannot write to file" << endl;
        dbFile->close();
      }
      else
        cout << "Opening file" << endl;
      delete dbFile;
      return 0;
    }
    

    Odpovědi

    16.5.2005 22:21 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: C++ a fstream
    Je potřeba zavolat dbFile->clear(), jinak po chybě odmítá spolupracovat. Taky to jde o něco zjednodušit.
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
      // jako fopen(..., "r+") => O_RDRW
      fstream *dbFile = new fstream("file.txt", ios::in | ios::out);
      if (!*dbFile) {
        dbFile->clear();
        // jako fopen(..., "w+") => O_RDRW | O_TRUNC | O_CREAT
        dbFile->open("file.txt", ios::in | ios::out | ios::trunc);
      }
      if (!*dbFile) {
        perror("file.txt");
        return 1;
      }
      if (!dbFile->write("AAXB", 4)) {
        perror("writing to file.txt");
        return 1;
      }
      dbFile->close();
      delete dbFile;
      return 0;
    }
    
    lobodpav avatar 17.5.2005 06:11 lobodpav | skóre: 8 | Ostrava
    Rozbalit Rozbalit vše Re: C++ a fstream
    Díky!!! O tom clear jsem se nikde nedočetl. Za ta zjednodušení taky díky.
    Když už jsme u C++, nevíte, zda se nedá sehnat nějaká dokumentace, jakou má např. Java API?? Nikde jsem nic podobného nenašel a dokumentace linuxu neobsahuje nic kolem C++ ...
    17.5.2005 07:33 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: C++ a fstream
    Hladas nieco taketo, taketo alebo taketo?
    lobodpav avatar 17.5.2005 08:06 lobodpav | skóre: 8 | Ostrava
    Rozbalit Rozbalit vše Re: C++ a fstream
    Ano. To jsou good odkazy :-)
    Díky!
    17.5.2005 10:59 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: C++ a fstream
    No, jak na to teď koukám, tak jsem to zjednodušil až moc, kdyby ten program hned neskončil, tak je samozřejmě potřeba delete dbFile; i při chybě (nebo mít dbFile na zásobníku...). Ale podstatné je to volání dbFile->clear() a to, že dbFile->open() stačí volat dvakrát.
    lobodpav avatar 17.5.2005 15:23 lobodpav | skóre: 8 | Ostrava
    Rozbalit Rozbalit vše Re: C++ a fstream
    Jojo, a odstranil jsi mi flag ios::binary, ale to jsou detaily...
    Hlavně, že mi to teď hezky běží :-) Dík.
    elviin avatar 17.5.2005 21:58 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
    Rozbalit Rozbalit vše Re: C++ a fstream

    twofish uz te zrejme uspokojil:). jen bych dodal pro inspiraci jine reseni:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    namespace {
      const string JMENO = "file.txt";   
    }
    
    
    int main() {
      fstream test;
       
      test.exceptions ( ifstream::eofbit | ifstream::failbit | ifstream::badbit );
      
      try {
        test.open ( JMENO.c_str(), ios::in | ios::out | ios::binary | ios::trunc);
      }
      catch (ifstream::failure &e) {
        cerr << e.what() << ":"<< endl; 
        perror ("Vyjimka otevreni/cteni ze souboru.");
        exit(1);
      }
    
      return 0;
    }
    

    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.