C++ Ecrire string dans fichier

Résolu
Bilow -  
 Bilow -
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.
Configuration: Windows XP Internet Explorer 7.0 Dev-c++

8 réponses

  1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    quel est le message d'erreur exactement ? Je t'aide volontier à le déchiffre, tu verras qu'il aide beaucoup.
    0
  2. Bilow
     
    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
  3. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Bilow
     
    Fantastique !!!

    Merci beaucoup !

    Ton lien a été utile...

    Au revoir et encore merci :)
    0
  6. Bilow
     
    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
  7. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    ç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
  8. Bilow
     
    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