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++Builder Discussion :

Différence entre un String et un string ? [FAQ]


Sujet :

C++Builder

  1. #1
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut Différence entre un String et un string ?
    Bonjour tout le monde !

    Voilà, j'ai créé un programme et j'utilise des String pour tous chaine de caractère.

    Ensuite, je souhaite sauvegarder des données dans un fichier, pour cela, j'ai créé une class Fichier et dans dedans, impossible de créer une chaine de caractère avec le mot String.

    Seulement en écrivant string avec un S minuscule, ça passe.

    Par contre, je rencontre des problemes entre mes classes, comment faire ? Quel est la différence avec String et string ?

    Merci de vos réponses

    PS : pourtant, j'ai fait un #include <string>

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    std::string (inclure <string>) est le type standard pour les chaines de caractères en C++.
    Il est directement compatible avec les types standard pour les fichiers : std::ofstream, std::ifstream, std::fstream (-> <fstream>) ; en fait, plus généralement std::string est compatible avec les flux standard.

    Quant à String ... j'imagine que c'est un truc propriétaire et pas nécessairement portable qui vient d'une bibliothèque que tu utilises.

  3. #3
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    D'accord, ça veut donc dire que je ne peut pas utiliser String avec ma class Fichier.

    Comment puis-je faire alors lorsque j'appelle une méthode de la class Fichier avec en parametre un String.

    Voilà un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String Chaine="coucou";
    Fich->Ecrire(Chaine);
    Voilà ma class Fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    bool Fichier::Ecrire(string Message)
    {
            bool Creation=true;
     
            ofstream Fiche(Nom,ios::out || ios::binary);
            Fiche<<Message;
            if(Fiche==0)
                    Creation=false;
            return Creation;
    }
    Je ne peut pas passer ma variable "Chaine" en parametre car ce n'est pas du meme type.

    A la compilation avec BC++6, il me marque :
    - [C++ Erreur] TrameWM918.cpp(60): E2034 Impossible de convertir 'AnsiString' en 'int'
    - [C++ Erreur] TrameWM918.cpp(60): E2342 Mauvaise correspondance de type dans le paramètre 'string' ('int' désiré, 'AnsiString' obtenu)

    Comment faire ? Merci d'avance

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    On dirait qu'ici String est un typedef sur AnsiString. Pour passer de l'un à l'autre, il faut utiliser la fonction membre c_str() qui renvoie un const char* (dispo sur AnsiString et string).

  5. #5
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    Oui merci bien, ça marche parfaitement !

    Si vous pouvez m'aider sur un autre probleme avec mes "thread", je serait ravis.


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

Discussions similaires

  1. [Xquery]différence entre data() et string()
    Par mamiberkof dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 10/01/2007, 13h14
  2. Réponses: 7
    Dernier message: 10/07/2006, 13h25
  3. Différence entre String et Int
    Par Alchimist dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2006, 11h00
  4. différence entre <string.h> et <string>
    Par mister3957 dans le forum C++
    Réponses: 3
    Dernier message: 20/03/2006, 19h33

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