Portál AbcLinuxu, 12. května 2025 07:27

Dotaz: Soubory > 4GB

Jardík avatar 29.12.2005 22:19 Jardík | skóre: 40 | blog: jarda_bloguje
Soubory > 4GB
Přečteno: 104×
Odpovědět | Admin
Nevíze, zda existuje ve standartní knihovně jazyka C++ něco pro práci se soubory většími než 4GB? Pokud možno, aby to bylo multiplatformní.
Věřím v jednoho Boha.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 30.12.2005 02:08 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Soubory > 4GB
Odpovědět | | Sbalit | Link | Blokovat | Admin
Taky jsem něco takového sháněl, ale nakonec jsem si to (multiplatformně) musel napsat sám.

Teď jsem ale zkusil sizeof(std::istream::off_type) a je to 8 bytes, to vypadá nadějně - bude to chtít vyzkoušet.
Luboš Doležel (Doli) avatar 30.12.2005 02:10 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Soubory > 4GB
Poznámka: není ten limit náhodou 2GB?
30.12.2005 02:59 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Soubory > 4GB
Samozřejmě ano, pro offset se používá signed typ.
30.12.2005 03:07 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Soubory > 4GB
Zkusil jsem zapátrat a zdá se, že záleží na verzi gcc (resp. libstdc++). Všechno je odvozeno od základního typu streamoff. Zatímco ve verzi 3.3.5 je definován ještě jako
  typedef long streamoff;
ve verzi 4.0.2 je to už
  #ifdef _GLIBCXX_HAVE_INT64_T
    typedef int64_t       streamoff;
  #else
    typedef long long     streamoff;
  #endif
Samozřejmě záleží i na tom, jak jsou soubory otevírány a jaké funkce se volají, ale předpokládám, že když si dali práci s 64-bitovými ukazateli a offsety, bude ošetřené i tohle.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.