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

Signaler
Messages postés
8
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
4 mai 2010
-
Messages postés
8
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
4 mai 2010
-
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
A voir également:

3 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
salut,

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


string est un objet, pas une chaîne de caractères proprement dite (comme un char[]).
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
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]
Messages postés
8
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
4 mai 2010

Merci sa a marcher!!