[évidemment, il s'appelle pas comme ça ! ], ensuite, je test s'il est bien ouvert. Sinon, je l'ouvre en ofstream(ios::out), en mode écriture simple, pour le créer donc. )Ensuite, j'ai donc un fichier ouvert, soit en mode read/write, soit en mode write, et s'il était ok (donc ouvert en mode read/write), je le lis, et après, et ce qu'importe comment il a été ouvert, j'écris dedans.
Bon, alors, mon code compile, ok. Le fichier s'ouvre bien, ok. S'il existe pas, il est bien crée, ok. J'ai mis des répères avec cout pour savoir si le bon morceau de code s'exécutais, oK. Mon SEUL et UNIQUE problème n'est pas une erreur. C'est juste que le code s'execute, mais, ne marche pas !
(note : cette lecture sert à savoir si le contenue (qui est OK) de new_file est déjà écris dedans le fichier. J'ai déjà tout vérifié, tout, la ligne s'execute sans problème, mais QU'IMPORTE la situation, ligne ne contient JAMAIS RIEN !)
De même, en écriture :
MON_FICHIER << new_file << endl;
Donc là, si en fait MON_FICHIER ne contenait pas le contenue de new_file, on l'y ajoute. Bâ, là non plus, pas de bug, rien, sauf que si j'ouvre le fichier en question, bâ, le contenue de new_file (qui est LUI AUSSI OK !!) n'est PAS dans le fichier.
En bref, je résume !
j'ouvre mon fichier, je vérifie qu'il est ouvert, s'il n'existe pas, je le crée, tout est ok.
Mes variables pour le contenue (new_file), j'ai vérifié avec des tonnes de cout, c'est bon.
Le code s'execute sans pb, c'est ok.
la compile plante pas.
Le prog plante pas.
C'est tout ok. Sauf que ma variable 'ligne' ne contient JAMAIS rien qu'importe ce qui est écris dans le fichier, même qu'il soit ouvert en rw, et mon fichier ne comporte rien non plus après l'écriture de new_file, qui elle aussi est ok ! Même en mode rw / w !!
Donc, pourquoi est-ce que mon read et mon write PLANTE ?? (au pire, j'ai qu'à faire ça en C, si comme moi vous voyez pas, mais, ce serait dommage...)
EDIT : nan attendez !!! ça marche.... J'ai passé tout hier à bosser dessus, ça marchait pas !! et là, ça marche.... enfin, j'apporte confirmation, mais ça à l'air....
EDIT: EDIT : en fait, pas totalement !
Bon, je crois que je vois comment faire pour que ça marche. En fait, ça marche (du moins, l'écriture) DANS LA MESURE OÙ le fichier n'existait pas, donc était ouvert en mode w. Donc, je pense que la soluce pour lire serait de l'ouvrir SEULEMENT en r, puis pour écrire, de le re-ouvrir SEULEMENT en w.
Je teste et vous tiens au courant.
EDIT: EDIT: EDIT : Ben, ça marche... bon, bâ... c'est bon, quelqu'un poste pour que je puisse mettre le sujet en résolu, ou alors, un modo pour le supprimer...
Je ne vois pas ce qui ne va pas dans ce que tu dis !
Hum, bon, j'ai progressé : le fichier est bien changé après écriture. Un hic à cela : normalement, je l'ai ouvert en mode qui ne remplace pas son contenue à l'écriture (ios::ate), sauf que ce n'est ABSOLUMENT pas le cas !
Sinon, la lecture est toujours sujette à problème. J'ai essayé tous les moyens possibles, autant getline(), que get() ou que >>.
hum, mon code est ok, ne merde pas, rien. Pas de bug à la compile. Ok.
Ou pas !
Alors, le test de l'ouverture du fichier se fait correctement. Je l'ouvre d'abord en ifstream, afin de voir s'il existe. Si c'est le cas, je le ferme, sinon, j'informe l'user que le fichier n'existe pas et qu'il sera crée. Ok. Ensuite, je ré-ouvre le même fichier en ofstream, ce qui, s'il existe, l'ouvre, sinon, le crée. Je test pour savoir si il est bien ouvert (un tout petit poil inutile en ofstream ! ), puis ensuite, j'écris dedans.
Alors, quoi de bon, quoi de pas bon ?
Premièrement, l'ouverture en lecture se fait correctement. Cependant, je n'ai pas réussi à lire une seule ligne du fichier, que se soit avec getline, avec get ou avec cin >> !!
Deuxièmement, l'ouverture en écriture se fait correctement (logique en même temps), je précise lors de l'ouverture que je ne veux pas supprimer le contenue (ios::ate), et j'écris. Bon, ben, il écris, mais qu'importe ce qu'il y avait avant, qu'importe où se trouve mon curseur, le fichier ne contient à la fin QUE CE QUI A ETE ECRIS. Le reste est zappé ! Et ce, même si ce que j'écris est plus court que le texte présent, donc, il ne réécrit pas dessus, il supprime tout simplement le contenu !
boa, le code n'est pas composé que de ça. Alors, faut que je fasse du tri ! (et puis il manie plusieurs fichiers, dont un qui ne buggue pas et qui est secondaire : son ouverture ne test que son existence, alors, faut pas s'arrêter dessus !!
Bon, alors aux dernières nouvelles : l'écriture marche, il en va de mon ios::ate qu'il a fallu transformer en ios::app.
Cependant, il est toujours incapable de lire le texte présent dans le fichier. Même quand ce texte, copié collé du tuto sur le SdZ, marche seul, dans le cas présent, il ne marche pas (en copié collé !!!!). Aller savoir pourquoi. Je me demande si ce n'est pas parce qu'il test deux fichiers les uns après les autres, mais il me semble que le test du deuxième se fait après la fermeture du premier. Aussi, je verrais ça demain, et je vous dis. Bonne soirée.
EDIT : problème résolu en intégralité, un petit "ios::ate" en trop lors de l'ouverture du ficher en lecture.... >.<"
Garde bien en tête qu'un fichier se comporte comme une bande magnétique, tu veux pouvoir lire ce que tu as écrit, il te faut revenir en arrière, sinon tu tente de lire les données qui sont après ce qui a été ecrit. Pas de chance dans ton cas, vu que c'est un nouveau fichier, il n'y a rien a lire car tu es déjà a la fin.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Pas d'aide concernant le code par MP, le forum est là pour ça :)