Domanda

Sto cercando di troncare parzialmente (o accorciare) un file esistente, utilizzando fstream. Ho provato a scrivere un carattere EOF, ma questo sembra non fare nulla.

Qualsiasi aiuto sarebbe apprezzato ...

È stato utile?

Soluzione

Non credo che si può. Ci sono molte funzioni per spostare "su e giù" la gerarchia wrapper per HANDLE<->int<->FILE *, almeno su Windows, ma non c'è un "adeguato" per estrarre il FILE * da un oggetto iostreams (se davvero è ancora implementato con uno).

Si possono trovare questa domanda di essere di aiuto.

Personalmente vi consiglio vivamente sterzo chiaro di iostreams, sono mal progettati, pesantemente C ++ e brutta da guardare. Date un'occhiata a , o avvolgere stdio.h se è necessario utilizzare le classi.

La funzione rilevante per stdio è ftruncate () .

Altri suggerimenti

Il Boost.Interprocess biblioteca definisce un funzione truncate portatile. Per qualche motivo non è documentato, ma lo si può trovare questo file di intestazione .

Sarà dipende dal sistema operativo. La maggior parte dei sistemi operativi supportano questa, ma in modi diversi. Su Windows, c'è un SetEndOfFile(). Su Unix e sistemi simili, si lseek in cui si desidera il file alla fine, e fa un lwrite di zero byte lì. Altri sistemi operativi senza dubbio utilizzare altri metodi.

ho morso la pallottola alla fine e ho letto la parte del file da tenere a una matrice poi ri-scritto. Non è la soluzione migliore -. Ma come i file saranno sempre piccolo ho deciso di accettare questo metodo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top