Problème écriture fichier avec fputs et chaine créée avec l'objet string

cs_curite Messages postés 8 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 4 mai 2010 - 29 mars 2010 à 07:56
cs_curite Messages postés 8 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 4 mai 2010 - 29 mars 2010 à 17:17
Bonjours, j'ai un problème, je n'arrive pas a écrire dans un fichier avec fputs en mettant un chaine de caractère créée avec l'objet string, voici le code:

#include <string>
#include 

using namespace std;

int main()
{
    string test;

    test = "ceci est un test";

    FILE* fichier=NULL;
    fichier = fopen("test.txt", "w");
    if (fichier != NULL)
    {
        fputs(test, fichier);
        fclose(fichier);
    }
    else
    {
    cout<<impossible d'ouvrir le fichier;
    }
}


Dans la fenètre d'erreur (Builde Message) sa me met:
cannot convert `std::string' to `const char*' for argument `1' to `int fputs(const char*, FILE*)'|

Quelqu'un serait comment écrire un chaine écrite avec l'objet string dans fichier? o_O

3 réponses

fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 3
29 mars 2010 à 08:44
salut,

essaie :
fputs(test.c_str(), fichier);


string est un objet, pas une chaîne de caractères proprement dite (comme un char[]).
0
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
29 mars 2010 à 10:04
Plein de petites remarques:
- Ne mélange pas C et C++: utilise fstream plutôt que FILE
- N'utilise pas "using namespace". Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Préfère 0 à NULL. Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/null-en-cpp
- Pas besoin d'inclure <string>, il est dans
- Utilise std::cerr pour une erreur, plutot que std::cout.

#include 
#include <fstream>

int main()
{
  std::string test;

  test = "ceci est un test";

  std::ofstream fichier;
  fichier.open("test.txt");
  if (fichier)
  {
    fichier << test << std::endl;
    fichier.close();
  }
  else
  {
    std::cerr << "impossible d'ouvrir le fichier" << std::endl;
  }
}


_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
cs_curite Messages postés 8 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 4 mai 2010
29 mars 2010 à 17:17
Merci sa a marcher!!
0