IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[C++14] Erreur de conversion (fstream)


Sujet :

C++

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Points : 162
    Points
    162
    Par défaut [C++14] Erreur de conversion (fstream)
    Bonjour à tous, j'ai un petit problème de débutant et pourtant je ne comprend pas vraiment pourquoi j'ai une erreur

    Voici le code qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    std::ofstream stream;
    std::string path{"Player_Data\\" + player_name};
    if(stream.open( path, std::ios::trunc ))
    {
         stream << this;
         return true;
    }
    Je suis sous la norme c++14 donc un string devrait passer en argument poue open(), ce qui n'est pas le cas car j'ai une erreur de conversion.
    Donc j'ai tout simplement essayé de faire à l'ancienne avec path.c_str() mais j'ai toujours l'erreur x)

    Si quelqu'un peux m'expliquer comment résoudre mon erreur et me dire pourquoi il me faut une conversion ( s'il en faut ) ce serait le top !

    Merci, Disix

    Ps : j'ai surcharger ostream ce qui explique le "this" ligne 5

  2. #2
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    Effectivement le constructeur et la fonction membre open de std::ofstream peuvent prendre un std::string depuis C++11.
    Quelle est ton compilateur et sa version ? Es-tu sûr d'avoir activer C++14 ? (Vérifie en ajoutant un #include <unordered_map> qui est disponible depuis C++11)
    Peut-on avoir l'erreur exacte ? (L'erreur est peut être autre part)

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Points : 162
    Points
    162
    Par défaut
    Alors, j'utilise Code::Block version 16.01 avec minGw version 5.3.0-2.
    Les flags suivant sont activé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    -std=c++11
    -std=c++14
     
    -Werror
    -Wold-style-cast
    -Woverloaded-virtual
    -Wwrite-strings
    -Wpointer-arith
    -Wcast-qual
    -Wconversion
    -Wdouble-promotion
    -Wlogical-op
    -Wuninitialized
    -fexceptions
     
    -O3
     
    + d'autre param de base
    L'erreur est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ||=== Build: Release in cd (compiler: GNU GCC Compiler) ===|
    B:\Bureau2\Game\abp\cd\Player.cpp||In member function 'bool Player::save() const':|
    B:\Bureau2\Game\abp\cd\Player.cpp|15|error: could not convert 'stream.std::basic_ofstream<_CharT, _Traits>::open<char, std::char_traits<char> >(path, (std::_Ios_Openmode)32u)' from 'void' to 'bool'|
    ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 5 second(s)) ===|
    L'erreur est bizarre.. et aucun problème avec #include <unordered_map>

  4. #4
    Membre actif
    Inscrit en
    Mai 2012
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 65
    Points : 282
    Points
    282
    Par défaut
    Si tu avais lu correctement l'erreur, tu aurais su que l'erreur ne vient pas du string mais de ton if.
    error: could not convert 'stream.std::basic_ofstream<_CharT, _Traits>::open<char, std::char_traits<char> >(path, (std::_Ios_Openmode)32u)' from 'void' to 'bool'
    La méthode open d'un stream, ne renvoie pas un booléen, mais void, si tu veux tester si le fichier est bien ouvert, c'est la fonction is_open() que tu dois tester.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Points : 162
    Points
    162
    Par défaut
    J'aurais dû lire l'erreur jusqu'au bout x) je suis pas doué merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de conversion
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/09/2005, 12h14
  2. Erreur de conversion
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 01/08/2005, 17h23
  3. Erreur de conversion et requête dynamique dans une procédure
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/08/2005, 16h12
  4. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 16h25
  5. Erreur de conversion int to socklen_t
    Par def_jam_vendetta dans le forum C++
    Réponses: 6
    Dernier message: 04/03/2005, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo