C++ Ecrire string dans fichier

Résolu/Fermé
Bilow - 26 nov. 2009 à 21:50
 Bilow - 28 nov. 2009 à 15:15
Bonjour,

Je suis intermédiaire en c++, et je cherche comment inscrire un string dns un fichier (texte).

Voici (une partie) de mon code :

string phrase;
getline(cin, phrase); // Demande à l'utilisateur une phrase...
FILE* fichier = NULL;
fichier = fopen("monfichier.txt", "w");
fprintf(fichier, "%s", phrase);
fclose(fichier);


Je n'ai inclus que ces librairies :

#include <cstdlib>
#include <iostream>
#include <windows.h>

Mon compilateur me signale une erreur à la ligne : fprintf(fichier, "%s", phrase);

Comment faire pour inscrire le string phrase dans "monfichier.txt" ?

Merci d'avance,
Bilow.
A voir également:

8 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
26 nov. 2009 à 22:51
quel est le message d'erreur exactement ? Je t'aide volontier à le déchiffre, tu verras qu'il aide beaucoup.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
26 nov. 2009 à 23:15
regarde ensuite bien la syntaxe de fprintf :
http://www.cplusplus.com/reference/cstdio/fprintf/

et ceci pourrait t'aider à résoudre le problème :
http://www.cplusplus.com/reference/string/string/c_str/
0
Bonjour,
excuse-moi je me suis un peu mal exprimé :
le compilateur affiche un warning avec ce message :

[Warning] cannot pass objects of non-POD type `struct std::string' through `...'; call will abort at runtime

puis l'éxécutable plante.

Si je mets :
fprintf(fichier, phrase);

cela ne fonctionne pas (erreur) :

cannot convert `std::string' to `const char*' for argument `2' to `int fprintf(FILE*, const char*, ...)'

Voila...

Les liens que tu m'a passés aident, mais ne résout pas mon problème.

Merci de ton aide:)
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
27 nov. 2009 à 16:14
si si ;)

la classe string possède une méthode c_str() qui convertit ta string en chaine de type "C" que printf accepte. Va voir sous cette fonction dans le lien sur string ;)
0

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

Posez votre question
Fantastique !!!

Merci beaucoup !

Ton lien a été utile...

Au revoir et encore merci :)
0
Bonjour,

pitié encore un autre problème...

lorseque j'inscrit un caractère spécial (é par exemple) dans le fichier, il est inscrit autre chose...
Par contre dans le programme il apparait normalement.

Comment faire ?

Merci beaucoup.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
27 nov. 2009 à 19:32
ça je ne connais pas par coeur la réponse, mais c'est un problème fréquent qui a déjà été posé maintes et maintes fois sur ce site. Je te conseille d'ouvrir un nouveau sujet, ou mieux de faire une recherche ;). Si je retrouve un sujet qui en parle je te le dirai.

Pour le terme précis, c'est un problème d'encodage des caractères (ISO-blabla ou UTF-8 ) qui diffère entre windows et la console.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
27 nov. 2009 à 20:12
https://forums.commentcamarche.net/forum/affich-15078745-caracteres-speciaux-ne-passent-pas-en

regarde là déjà, j'y donnais un lien, vérifie s'il ne résoud pas ton souci!

Bonne chance.
0
Bonjour,

Merci pour ton aide, mais je n'ai pas trouvé d'aide pour cela...

Au revoir, et merci pour m'avoir aidé pour le sujet initial.
Bilow.
0