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 :

Pardon par avance : Concaténation de chaîne de caractères


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Pardon par avance : Concaténation de chaîne de caractères
    Bonjour à tous,

    je deviens dingue et je rage comme un fou tellement ça m'énerve. Je suis complètement désolé par avance parce que la question a du être gérée un milliard de fois.

    J'ai regardé la FAQ avant de venir ici mais elle ne répond pas à ma question car elle ne traite que chaînes de longueur fixées (char[50], char[100], etc. etc.)

    Je souhaite faire quelque chose d'incommensurablement complexe et original : concaténer dans une chaîne de caractère de taille indéfinie (un char * quoi) une variable chaîne dont je peux fixer la longueur là par contre, mais dont le contenu va varier

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * chaine_finale ;
    char[50] mon_buffer ;
    au lancement : je veux que chaine_finale = "" et mon_buffer = "tour 1;" par exemple
    et mettre le contenu de mon_buffer à la suite du contenu de chaine_finale.

    tour 2 : chaine_finale vaut "tour 1;" et mon_buffer vaut "tour 2;".
    tour 3 : chaine_finale vaut "tour 1;tour 2;" et mon_buffer vaut "tour 3;".
    ...
    tour n : chaine_finale vaut "tour 1;tour 2;...;tour n-1;" et mon_buffer vaut "tour_n".

    me dites pas qu'il faut que je passe par du malloc ou du realloc quand même ... ? si ? y a pas de librairie ni de fonctions qui encapsule la gestion de concaténation dynamique de chaîne en C ?

    Help par pitié je vais finir par tuer le chien (qui n'a rien fait) tellement ça m'énerve !

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Le prototype de la fonction est-il libre ou imposé ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Pourtant dans la FAQ il y a les solutions avec sprintf et strcat.
    https://c.developpez.com/faq/?page=L...-de-caracteres
    Que les chaînes soient déclarées comme [length] n'a absolument aucune incidence, il suffit de regarder les prototypes de ces fonctions pour s'en assurer.
    Et oui si ta chaîne qui reçoit les données n'est pas assez grande, il va bien évidemment falloir passer par du malloc/realloc.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci de votre réponse

    Je ne suis pas sûr de bien comprendre la question.

    En fait en reprenant mon exemple précédent, ma "chaine_finale" est une ressource partagée.

    J'ai un thread qui vient la remplir (avec mon_buffer du coup dans mon exemple)

    Et derrière j'ai un autre thread qui vient "vider" cette chaîne dans un fichier selon d'autres critères

    Je peux bien sûr partir sur une taille fixe surdimensionnée, mais je trouve ça moche d'aller allouer 500000 char de mémoire si je n'en utilise au max que 5000 :s

    Vous parlez du prototype de ma fonction du premier thread du coup ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Pourtant dans la FAQ il y a les solutions avec sprintf et strcat.
    https://c.developpez.com/faq/?page=L...-de-caracteres
    Que les chaînes soient déclarées comme [length] n'a absolument aucune incidence, il suffit de regarder les prototypes de ces fonctions pour s'en assurer.
    Et oui si ta chaîne qui reçoit les données n'est pas assez grande, il va bien évidemment falloir passer par du malloc/realloc.
    Comme je l'ai dit dans mon premier message, j'avais bien sûr été voir la FAQ avant d'aller poser une question que je sais être posée déjà mille fois.

    j'ai regardé les prototypes et du coup oui je ne comprends pas parce que pour moi ça devrait marcher :

    le proto de strcat est le suivant, sauf erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *strcat(char *dest, const char *src)
    or dans mon test, je lui passe bien un char * en premier argument :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char * chaine_finale = "GRRRRRR!" ;
    ...
    strcat(chaine_finale ,"POUUUUUUUUUUUUUUUUUET");
    Et derrière j'ai un Seg Fault à chaque fois ... d'où mon incompréhension. :'(

    Quant au malloc ou realloc, j'avais le secret espoir qu'il y avait des fonctions qui encapsulaient déjà ce type de fonctionnalités tellement ce type de besoin me semble fréquent ...

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Dans ce bout de code chaine_finale est de taille finie. En y ajoutant des données tu dépasses sa taille. D’où Le segdefault.

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    C'est surtout que ce code essaye d'écrire dans la mémoire constante... Aucune RAM n'est ici allouée pour stocker les caractères.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Ok c'est ce que je craignais, merci pour vos réponses ...

    Je vais prendre ma croix et aller recoder une usine à gaz de malloc pour gérer ça ... snif

    quand tu pense que même un pauvre korn shell sait faire ça les doigts dans le nez ... ça fait de la peine ... enfin, tant pis.

    Merci encore à tous.

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Tu crois Korn Shell fait ça comment ?

    C'est pas super compliqué non plus, le code doit ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    length = strlen(a) + strlen(b)
    p = malloc(length)
    snprintf(p, length, "%s%s", a, b)

  10. #10
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Je répondrais donc comme tu le soupçonnes. Passer par un malloc / free me semble être le plus simple.

    Tu pourrais par exemple faire ceci en considérant que les chaînes transmises sont correctement formatées, c’est à dire se terminant par \0. De plus si on part du principe que la chaîne destination str1 est allouée dans le tas alors on peut la liberer dans la même fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char *perso_strcat (char *str1, char *str2)
    {
      char *result = malloc (strlen (str1) + strlen (str2) + 1);
      result = strcpy (result, str1);
     
      result = strcat (result, str2);
     
      free (str1); // à voir en fct de ton code
      return result;
    }
    Je n’ai pas testé ce code mais l’idée générale est là.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Yep merci à tous les deux, vous dégainez plus vite que moi ^^

    Non je trouve juste dommage que la fonction que tu as décrite Gerald3d ne fasse pas partie d'une bibliothèque intégrée du style <string.h> par exemple.

    merci encore à tous

  12. #12
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Tu as std:string dans la bibliothèque standard, mais du C++.

    Si tu débutes, je t'invites à jeter un œil sur C++.

    Mais attention C++ c'est pas du C. La syntaxe reste similaire, donc ce que tu as déjà appris en C te servira en cas de passage à C++.

    La difficulté est qu'en C, une chaine de caractère ça n'existe pas vraiment. C'est un tableau de char qui doit se terminer par \0. Ce tableau est adressable sous forme de pointeur, celui-ci pointant alors sur le premier caractère de la chaine/
    Donc soit tu crée implicitement une chaine de 5 caractères avec un code comme char chaine[5], soit tu dois allouer la mémoire avec malloc (et éventuellement realloc pour modifier la taille). Toutes les fonctions de manipulation de chaine <string.h> considèrent que les chaines traitées ont la place nécessaire et ne font aucun contrôle.

    En c++, on parle d'objet. Tu n'as pas à te préoccuper de la taille d'un objet string C++, le système fait le boulot pour toi.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  13. #13
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Bktero Voir le message
    C'est pas super compliqué non plus, le code doit ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    length = strlen(a) + strlen(b)
    p = malloc(length)
    snprintf(p, length, "%s%s", a, b)
    Attention, il manque l'emplacement du 0 terminal, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length = strlen(a) + strlen(b) + 1

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Maestro_pikal Voir le message
    Je vais prendre ma croix et aller recoder une usine à gaz de malloc pour gérer ça ... snif
    Ben oui, c'est justement fait pour ça malloc !!! Il ne faut pas en avoir peur. Et surtout ce n'est pas parce que tu l'utilises que ce que tu fais devient forcément une usine à gaz...

    Citation Envoyé par Maestro_pikal Voir le message
    quand tu pense que même un pauvre korn shell sait faire ça les doigts dans le nez ... ça fait de la peine ... enfin, tant pis.
    Python aussi et bien d'autres choses (essaye par exemple de coder en C le append() de Python et là tu comprendras vraiment ta douleur). Mais faut savoir ce que tu veux. Si tu veux utiliser un langage aussi fin qu'un cheveu qui te permet de toucher le coeur de la machine avec une précision chirurgicale faut aussi assumer ensuite de devoir tout lui faire faire.

    Citation Envoyé par Maestro_pikal Voir le message
    Non je trouve juste dommage que la fonction que tu as décrite Gerald3d ne fasse pas partie d'une bibliothèque intégrée du style <string.h> par exemple.
    Moui pourquoi pas. Effectivement puisqu'il existe strdup() et readline() je t'accorde qu'il pourrait exister aussi cette fonction là. On mettra ça sur le compte de la faute à "pas de chance"...

    Citation Envoyé par gerald3d Voir le message
    Je répondrais donc comme tu le soupçonnes. Passer par un malloc / free me semble être le plus simple.
    Non seulement le plus simple mais aussi et surtout la seule et unique solution possible.

    Citation Envoyé par gerald3d Voir le message
    en considérant que les chaînes transmises sont correctement formatées, c’est à dire se terminant par \0.
    Pareil, tu es en réalité obligé de faire cette hypothèse. Sinon déjà tu ne peux plus nommer ce que tu reçois "chaine" et surtout tu ne peux plus le traiter

    Citation Envoyé par gerald3d Voir le message
    De plus si on part du principe que la chaîne destination str1 est allouée dans le tas alors on peut la liberer dans la même fonction.
    Moui. Mais ce que tu présentes comme un avantage est en réalité une faiblesse car tu limites désormais les possibilités d'utilisation de ta fonction (interdit par exemple d'appeler désormais perso_strcat("xxx", "yyy") !!!).

    Citation Envoyé par gl Voir le message
    Attention, il manque l'emplacement du 0 terminal, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length = strlen(a) + strlen(b) + 1
    Très bien vu (@Bktero quelle erreur !!! )
    Toutefois moi je conseillerais de laisser "length" avec sa vraie valeur correspondant à sa définition (donc la longueur exacte de la chaine concaténée) et de rajouter le "+1" au malloc...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour
    ...
    Moui. Mais ce que tu présentes comme un avantage est en réalité une faiblesse car tu limites désormais les possibilités d'utilisation de ta fonction (interdit par exemple d'appeler désormais perso_strcat("xxx", "yyy") !!!).
    En effet bonne remarque. Je pousserais le prototype comme ceci char *perso_strcat(const char *str1, const char *str2);

  16. #16
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par gl Voir le message
    Attention, il manque l'emplacement du 0 terminal, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length = strlen(a) + strlen(b) + 1
    C'est bien pour ça que je disais "doit ressembler"

  17. #17
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Amélioration possible :

    faire une fonction variadique permettant de concaténer un nombre de chaines variable.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  18. #18
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    En effet bonne remarque. Je pousserais le prototype comme ceci char *perso_strcat(const char *str1, const char *str2);
    En fait le souci c'était pas vraiment le prototype mais plutôt le free(str1) quoi...

    Citation Envoyé par Bktero Voir le message
    C'est bien pour ça que je disais "doit ressembler"
    Argh cte mauvaise foi comme j'y crois trop pas quoi
    Moi aussi désormais je vais dire "doit ressembler" pour couvrir mes éventuelles erreurs. Ah ben non, pas besoin vu que je ne commets jamais d'erreur
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    C'est bien connu, c'est l'informatique qui est en cause, pas nous.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  20. #20
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Les chaines en C, j'en fais jamais, du coup du coup je galère à chaque, du coup je fuis encore plus, du coup j'en fais encore moins. Aucun remord.

    Moi si je dois concaténer deux chaines, ben je ferais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <string>
     
    std::string a = "hello";
    std::string b = "world";
    auto c = a + b;
    Hop !

    On remarquera d'ailleurs que je n'ai pas posté ça comme du code, c'est en balise PRE en mode pseudo-code. Si j'avais fait un vrai code j'aurais pris la peine de le tester

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/08/2007, 09h53
  2. Concaténation de chaînes de caractères
    Par Sakapatate dans le forum Débuter
    Réponses: 15
    Dernier message: 16/06/2007, 22h19
  3. Concaténation de chaîne de caractères
    Par Ardely dans le forum Delphi
    Réponses: 6
    Dernier message: 31/01/2007, 19h10
  4. Réponses: 3
    Dernier message: 14/04/2006, 09h57
  5. concaténation de chaîne de caractère
    Par jh0483 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/08/2005, 17h10

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