Ofstream & ifstream

Résolu
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005 - 17 nov. 2005 à 13:34
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 1 déc. 2005 à 17:09
Boonjour;

J'ai une question toute simple savais pkoi cette syntax n'est pas accepté :

ofstream filesoft( lpe.lpe["fichier"]);

Merci d'avance.

en faite le but est de récuperer me nom du fichier à l'aide d'un fichier de config pour cela g fais un traitement avec une map ect...
A voir également:

13 réponses

silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005
17 nov. 2005 à 17:15
Non c'est bon j'ai vu ou cela cloché en faite il suffit d'utiliser la syntaxe suivante :

ofstream fileerr( lep.lpe["fichier"].c_str());

voilà cela fonctione très bien
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
17 nov. 2005 à 13:43
Bah, écoute, si tu ne nous pas plus d'indications sue ce qu'est "lpe", tu n'auras pas beaucoup de réponses...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005
17 nov. 2005 à 14:03
Alors en faite cela correcpond à lpe::lpe["fichier"]
c'est l'appel de la map lpe dans la class lpe tout simplement et dans cette map il y a tout le stockage des valeurs contenu dasn un fichier .txt que j'ai parsé voilà
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
17 nov. 2005 à 14:28
Mouais, pas clair,...
Il faut savoir que le constructeur de (i/o)fstream prend en paramètre:
- const char * name --> nom du flux à ouvrir (fichier.txt)
- int mode --> ios::out pour ouvrir un flux en écriture (par défaut: ios::out)
- int protection --> protection du fichier (par défaut: filebuf::openprot)

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005
17 nov. 2005 à 14:48
Bon pou avoir plus de compréhension je vais reprendre du début.
Alors j'ai créé une class contenant une map qui me permet de stocker des valeurs lu d'un fichier config.txt.
Ainsi chaque valeurs de se fichier peut etre réutiliser dans l'importe quel partie du programme en vesant simplement un appel avec la map.

Ex :

ple.ple['fichier"] va renvoyé fichier.txt ce qui est contenu dans le fichier config.txt.

Ce qui veux dire que je n'écrirais plusen dur le nom du fichier à ouvrir maios cela se fais par l'intermediare d'un fichier de config.

Jusque la tout va bien cela fonctionne correctement. Le probleme c'est quand je désire utiliser cette syntaxte de le ofstream.

ex :

ofstream fileerr( "Error.log" ); //ouverture du fichier error.log

je veux le faire comme ca mainteannt en utilisant ma map avec mon fichier config.txt
lep.lep["fichier"]; => error.log
ofstream fileerr( lep.lpe["fichier"]); //ouverture du fichier qu'il s'appelle error.log

voilà je pense que la sa doit etre claire.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
17 nov. 2005 à 15:01
OK, je comprends un petit peu mieux. Etant donné que je ne connais pas la classe map par coeur, je vais sur MSDN. Là, j'apprends:
- l'opérateur [] permet d'ajouter une valeur avec un clé spécifiée
- iterator find(const Key& _Key) permet de récupérer un itérateur pointant sur la clé spécifiée
- l'exemple me montre comment rechercher une valeur associée à une clé

Du coup, teste ceci (ou un truc du genre):
std::map<?,?>::iterator _It = lpe.find("fichier.txt");
ofsteam OutFile(_It->second);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005
17 nov. 2005 à 15:27
Oui je sais je déjà essayé cela et sa fonctionne mais c'est des que je désire l'incruster dans les () de ostream que cela ne marche pas il me marque :

error: no matching function for call to :
std::basic_ofstream<char, std::char_traits<<char> >::basic_ofstream(
std::basic_string<char, strd::char_traits<char>, std::allocator<char> >&)
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
17 nov. 2005 à 15:54
Et bin alors, t'embêtes pas si cela marche comme cela...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005
17 nov. 2005 à 16:09
oui mais ca arche en dehord du ofstream mais moi je veux le mettre dedant ... c'est cela la base de mon probleme. ??
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
17 nov. 2005 à 16:33
What a strange problem!

Tu as bien inclus iostream: #include et non pas ?
Ta map est bien déclarée comme ceci: map< char *, char *> ?
Tu fais bien un truc du genre:
ofstream OutFile(lpe.find("fichier.txt")->second);

Désolé de te demander cela mais ce sont des erreurs toutes bêtes que tu mets longtemps à trouver...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
17 nov. 2005 à 17:26
Effectivement, si tu ne me dis pas que tu travaille avec des CString...

Bon continuation

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ekinox17 Messages postés 66 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 janvier 2006
1 déc. 2005 à 09:29
rectification pour buno

.c_str() => ne rerenvoie pas une CString mais bien un char* en fait
je t'explique lorsque'il faisait ceci : lep.lpe["fichier"] il recupere
un pointeur sur sa map et non sur sa chaine de caractere puis il lui
applique la fonction c_str() afin d'en recuperer la chaine de caractere
de cet element de la map.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
1 déc. 2005 à 17:09
Merci, j'avais compris :P
Ce que je voulais dire, c'est que s'il m'avait dit, dès le départ, qu'il manipulait une map de CString, le post n'aurait pas été aussi long :)

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous