2010-11-02 22 views
0

Je peux écrire dans un fichier texte puis j'utilise getline et je ne peux plus écrire dans le fichier.C++ Après avoir utilisé getline pour lire un fichier, je ne peux plus écrire dans le fichier txt

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main(){ 
ifstream infile; 
fstream crypto; 
ofstream hacker; 
string tempString; 
string tempString2; 
string plaintext; 
string line; 
string dec; 
. 
. 
. 
crypto<<"hello";//write some stuff to file here 
use getline(crypto, line, '\n') 
crypto<<"hi";//Doesnt write to file anymore. 
+0

Je pense que le problème a à voir avec essayer de lire et d'écrire à partir du fichier simultanément. Si ce n'est pas l'erreur, l'erreur réside dans getline, et comment vous utilisez. – Jim

Répondre

0

Il est un peu difficile de voir à partir de votre code comme est (essayez rendements après chaque ligne) mais je suppose que vous avez défini l'accès aux fichiers à lire.

0

Le fichier est entré en état d'erreur.

Une fois que le fichier est dans un état d'erreur, toutes les opérations io seront ignorées jusqu'à ce que vous réinitialisiez l'état d'erreur. Donc, fondamentalement, ce qui précède suggère que l'opération getline a échoué d'une manière ou d'une autre.

2

Les fichiers ont un seul statut d'erreur et un indicateur de position de fichier partagé, qui est utilisé pour les opérations de lecture et d'écriture.

Si l'état d'erreur est défini, aucune opération de lecture ou d'écriture n'aboutira sur le fichier. La lecture au-delà de la fin du fichier est un déclencheur qui provoquera le statut d'erreur, dans ce cas jusqu'à ce que l'indicateur de position de fichier soit repositionné dans les limites du fichier. Comme il n'y a qu'un seul indicateur de position pour la lecture et l'écriture, vous devez repositionner cet indicateur chaque fois que vous basculez entre la lecture et l'écriture du même fichier pour vous assurer que vous effectuez l'opération suivante à l'emplacement souhaité ça se produit.