De l'écriture à la position spécifique dans un fichier
J'ai
fstream output;
output.open(fname, ios::out | ios::trunc); //file
for (int i=0; i<flength; i++)
output.put('1');
Je veux remplacer différente de la longueur des données à différents endroits dans le fichier. Les données sont les personnages.
Permet de dire qu'il n'y est 111111111111111111111111111111111
, je veux écrire
11 111111333111!!!!!!1 11441111
Vous devez vous connecter pour publier un commentaire.
Utilisation
seekp()
pour paramétrer la position dans le flux de fichier.Vous ne pouvez pas "insérer" les choses dans le milieu du fichier - le seul en place des opérations que vous pouvez faire est d'écrire exactement le même nombre d'octets que vous essayez d'écraser, c'est à dire l'écriture, sans modification de la longueur du fichier. Si vous avez besoin d'écrire une chaîne de caractères de longueur différente (comme dans votre exemple), vous devez réécrire tout le fichier à partir du point où vous avez terminé votre opération d'écriture (magasin d'origine dans une mémoire tampon et de réécriture).
Découvrez
ostream::seekp
, ici. Placez le pointeur de fichier à l'emplacement souhaité avant d'écrire.Vous pouvez utiliser seekp pour définir la position de la mettre pointeur et d'écrire à la position spécifique dans le fichier, par exemple
La Meilleure façon est de réécrire tout le fichier dans un autre fichier après avoir fait les changements nécessaires.
Copier le flux avant de retirer votre fichier. Cela peut vous aider à préserver le nom du fichier.