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 :

convertir un char * en string


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut convertir un char * en string
    Je souhaite convertir un tableau de char en string, avec un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char *msg[MAXMSG];
    /* ... du code où je met un message dans msg ...*/
    string nom(msg);
    et là ca ne compile pas avec un joli message d'erreur comme quoi "impossible de convertir le paramettre blabla..."

    la seule doc que j'ai trouvé sur le site ne m'a pas eclairé :
    http://c.developpez.com/faq/cpp/?pag...INGS_from_char

    Si quelqu'un a une idée pour resoudre rapidement le probleme, merci beaucoup !

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    char *msg[MAXMSG];
    Sommes-nous d'accord sur le fait que "msg" soit un tableau de pointeurs de char ?

    Si c'est bien exact :

    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
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int main (void)
    {
    	char * msg[2];
     
    	msg[0] = "exemple";
    	char chaine[] = "2ieme exemple";
     
    	msg[1] = chaine;
     
    	cout << msg[0] << endl;
    	cout << msg[1] << endl;
     
    	string str = msg[0];
    	string str2;
    	str2.assign ( msg[1] );
     
    	cout << str << endl;
    	cout << str2;
     
    	return 0;
    }
    dans le cas où "msg" est une simple chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	char msg[] = "simple exemple";
     
    	string str = msg;
     
    	/* ou encore
     
    	string str;
    	str.assign ( msg );
     
    	*/
     
    	cout << str << endl;

  3. #3
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Nous sommes en C++, c'est pas mal de ne plus utiliser les char* pour stocker et travailler sur des chaines de caractère...
    vive la STL et les std::string
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  4. #4
    Membre averti Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par Rafy
    Nous sommes en C++, c'est pas mal de ne plus utiliser les char* pour stocker et travailler sur des chaines de caractère...
    vive la STL et les std::string
    De plus, les string sont beaucoup plus maniables que les char*
    Vive les string

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    En effet je me suis melangé les pinceaux avec ma chaine de caracteres qui est en fait une simple chaine :
    Dessuite ça marche beaucoup mieu.
    La morale de l'histoire c'est qu'il faut pas essayer de coder tard dans la nuit.
    Merci beaucoup à tout le monde d'avoir pris le temps de lire et de repondre.

    ps: pour ce qui est de l'utilisation du tableau de caractere, c'est pour recuperer du texte depuis un socket. "Il me semble" que cela m'evite des problemes de serialisation de string, choses qui m'ont paru obscure et compliqué de prime abord, voila donc le pourquoi du comment.

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Vu que la longueur des messages que je récupère est variable, j'utilise des std::vector<>. La mémoire est contigue, redimensionable, et il est même possible de feinter à coups de resize() pour éviter les réallocations perpétuelles en temps-réel.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. Convertir un char[][] en string
    Par cyrodil dans le forum Langage
    Réponses: 20
    Dernier message: 15/03/2009, 21h04
  2. Convertir Char* en String
    Par Blunt dans le forum C++/CLI
    Réponses: 1
    Dernier message: 01/07/2007, 16h46
  3. Convertir char* en string
    Par KorTeX22 dans le forum C++
    Réponses: 5
    Dernier message: 13/03/2007, 11h54
  4. Convertir un Char* en string
    Par DEVfan dans le forum C++
    Réponses: 4
    Dernier message: 05/01/2007, 16h15
  5. convertir un char * en std::string
    Par benahpets dans le forum SL & STL
    Réponses: 12
    Dernier message: 01/05/2006, 17h15

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