Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pb de boucle

l

Sujet résolu
    2 octobre 2008 à 14:18:27

    Bonjour,

    Je rencontre quelques soucis à remplir une liste déroulante de façon récursive. En fait je réalise une concaténation qui ne se apsse pas bien. Avec le code suivant :
    //on recupere le nombre de sommets
    const int nv = m->mesh.getNumVerts() ;
    	
    //char *tab[nv] ;
    for(int i=0; i<nv; i++)
    {
    	TSTR item = "Point p" + i ;
    	SendMessage(hwndListBox, CB_INSERTSTRING, i, (LPARAM)(LPCSTR)item) ;
    }
    

    j'obtiens ça dans ma liste :
    Point p
    oint p
    int p
    nt p
    n p
     p
    p
    

    Ce que j'aimerais avoir, c'est :
    Point p0
    Point p1
    ...
    

    Or là il me prend ma chaine à partir du ième caractère, au lieu de rajouter i à chaque fois :(


    Darholm
    • Partager sur Facebook
    • Partager sur Twitter
    Zero since 2007
      2 octobre 2008 à 14:28:53

      Ça m'étonne que ton compilateur la laisse passer, celle là.

      Une chaîne de caractères, en C++ (tout comme en C, d'ailleurs), équivaut à un pointeur sur le premier caractère. Donc, tu additionnes un entier avec un pointeur.

      Pour une concaténation, renseigne toi sur les std::ostringstream.
      • Partager sur Facebook
      • Partager sur Twitter
        2 octobre 2008 à 14:36:04

        Oui, j'ai été également surpris de voir qu'il ne gueulait pas sur la différence de type dans la concaténation, mais bon!
        En fait en bidouillant un peu sur LPARAM, un simple sprintf m'a sorti d'affaires.

        Darholm
        • Partager sur Facebook
        • Partager sur Twitter
        Zero since 2007

        Pb de boucle

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown