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

SL & STL C++ Discussion :

Questions sur les std::string


Sujet :

SL & STL C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut Questions sur les std::string
    Bonjour,

    voilà, j'ai 2 petites questions sur les std::string :

    1/ Quand on crée un string avec une chaîne vide,
    exemple : il est = NULL.
    Y a-t-il des contraintes d'utilisation du coup ?

    2/ Si j'ai une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void f(const std::string& s)
    et que je veux lui passer un char* :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char tab[256];
    strcpy(tab, "coucou");
    f(tab);
    Y a-t-il une meilleure syntaxe ? (à part de ne pas utiliser les char bien sûr )
    Ou de toute façon on a création d'un objet std::string par recopie à partir de std::string(tab); ??

    Merci par avance.
    @+

  2. #2
    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
    Par défaut
    1/ Je ne comprends pas ce que tu veux dire. Une chaîne vide est juste vide, il n'y a pas d'histoire de NULL (tout du moins pas dans ce que tu manipules). Donc il n'y a pas plus de précautions à prendre qu'avec n'importe quelle chaîne.

    2/ std::string est constructible implicitement à partir d'un const char*, donc ce que tu fais marche très bien. Tu entends quoi par "meilleure syntaxe" ? Qu'est-ce qui te gêne ici ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    1/ Lorsque j'écris std::string s1("");
    le debogueur de visual me montre s1 NULL

    2/ Meillleure syntaxe = le plus propre.
    f( std::string(tab) ) ?

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par olive_le_malin
    1/ Lorsque j'écris std::string s1("");
    le debogueur de visual me montre s1 NULL
    Tu peux écrire tout simplement:Et si visual montre NULL, c'est parce qu'il ne sais pas quoi afficher. Chez moi, il affiche "".
    Mais bon, s1 est un objet, donc à partir du moment où il est créé, il faut le manipuler comme n'importe quel objet.

    Citation Envoyé par olive_le_malin
    2/ Meillleure syntaxe = le plus propre.
    f( std::string(tab) ) ?
    Tu peux faire quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void f(const string str);
     
    int main(char* argv, char** argc)
    {
    	const char* toto = "toto";
    	f(string(toto));
    //...
    }
    edit: je viens de voir que foncitonne aussi. Je ne sais pas lequel est le meilleur.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    Et si visual montre NULL, c'est parce qu'il ne sais pas quoi afficher. Chez moi, il affiche "".
    OK

    edit: je viens de voir que
    Code :
    f((string)toto);foncitonne aussi. Je ne sais pas lequel est le meilleur.
    Ben c'est un peu ce que je me demande aussi ...

    Merci
    @+

  6. #6
    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
    Par défaut
    1/ Lorsque j'écris std::string s1("");
    le debogueur de visual me montre s1 NULL
    Probablement la représentation interne de ta chaîne, chose dont tu n'as pas à te préoccuper.

    edit: je viens de voir que
    Code :
    f((string)toto);foncitonne aussi. Je ne sais pas lequel est le meilleur.
    Ben c'est un peu ce que je me demande aussi ...
    Ce sont toutes des manières d'écrire le même code : quoiqu'il arrive ce sera un std::string temporaire qui sera passé à la fonction, construit avec le constructeur std::string(const char*).

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    Merci à vous !

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

Discussions similaires

  1. Question sur les std::map
    Par tlemcenvisit dans le forum SL & STL
    Réponses: 6
    Dernier message: 30/10/2008, 12h11
  2. [Std::map] Question sur les clés
    Par Kreeg dans le forum SL & STL
    Réponses: 1
    Dernier message: 26/02/2008, 22h32
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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