Considérons le programme C++ suivant, qui prend un fichier et imprime chaque ligne. C'est une tranche d'un programme plus important où je joins plus tard au dossier, basé sur ce que je vois.Pourquoi ne puis-je pas lire et ajouter avec std :: fstream sur Mac OS X?
#include <fstream>
using std::fstream;
#include <iostream>
#include <string>
using std::string;
int main()
{
fstream file("file.txt", fstream::in | fstream::out | fstream::app);
string line;
while (std::getline(file, line))
std::cerr << line << std::endl;
return 0;
}
Maintenant, appliquez cette version de file.txt
(Un mot sur la première ligne, suivi d'un saut de ligne):
Rain
Sur ma machine (Snow Leopard), ce imprime rien. En y regardant de plus près, le premier appel à getline échoue. Étrangement, il échoue également si j'ajoute une deuxième ligne: toujours rien n'est imprimé!
Quelqu'un peut-il résoudre ce mystère?
Votre programme fonctionne pour moi, donc cela peut être un bug dans votre environnement. Avez-vous essayé d'ouvrir en lecture seule, c'est-à-dire juste 'fstream :: in'? –
Fonctionne bien ici aussi, faites comme Earwicker dit et vérifiez que votre fichier est effectivement ouvert. – Manuel
BTW, vous envoyez le texte à 'std :: cerr' -' std :: cout' serait plus normal pour la sortie réelle. 'std :: cerr' est pour le rapport d'erreur (comme dans ma réponse). –