CString et formatage avec '%d' [Résolu]

Signaler
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Bonjour,

Ma CString contient un '%d' et je voudrais lui affecter la valeur correspondante, mais jai du mal.

Je pars d'une ressource :
IDS_STRING : Ma Valeur %d

Dans le code j'ai :
   int iValue = 10;
   CString cs;
   cs.LoadString(IDS_STRING);
Et après je coince, je n'arrive à rien avec la méthode Format :
   cs.Format(cs, iValue);

Par contre je n'ai aucun soucis avec sprintf :
    char szTest[500];
    strcpy(szTest, cs.GetBuffer(0));
    sprintf(szTest, szTest, iValue);

J'ai la parade avec le sprintf, mais vu que je suis dans une appli MFC, je me dit qu'il doit y avoir une solution en CString.

Quelqu'un a une idée ?

Merci

3 réponses

Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011

Salut,

moi je le verais plutôt comme ça:
Je pars d'une ressource :

   IDS_STRING : Ma Valeur
   int iValue = 10;
   CString tmp;
   CString cs;
   tmp.LoadString(IDS_STRING);
   cs.Format(%s%d,tmp, iValue);

Cordialement,
Sébastien.
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
C'est bon,

en fait ta solution de passer par une variable temporaire est la bonne.
Il faut en fait faire :
  tmp.LoadString(IDS_STRING);
  cs.Format(tmp, iValue);
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
En effet, je me suis mal exprimé:

on va plutôt dire que le '%d' est obligatoirement dans IDS_STRING :
IDS_STRING : "Ma Valeur %d, le reste de ma chaîne"

Je sais que la solution pourrait être
IDS_STRING1 : Ma Valeur
IDS_STRING 2 : , le reste de ma chaîne

Et apès on concatène les 3 morceaux. Mais je suis persuadé que je peux éviter ça.
C'est quand même bizarre qu'une CString ne fasse pas aussi bien que le sprintf, il doit y avoir une solution