Conversion int -> LPCTSTR

[Résolu]
Signaler
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
-
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
-
Je débute en C++ :

Comment convertir un nombre (int, long, HKEY, ...) en chaine LPCTSTR
utilisé par les apis, sans utiliser de cast (j'ai essayé mais j'ai
l'impression que ça marche pas) ?



Merci de vos réponses.

13 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
donc itoa ou sprintf pour convertir en char[] :
char szVal[16];
int val = 67;
itoa(val, szVal, 10);
ou
sprintf(szVal, "%d", val);

AfxMessageBox(szVal);

Et je rappel que LPCTSTR est un typedef de windows.h de "const char*"
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
#include

std::string

ou alors mettre 'using namespace std;' au début et utiliser directement string.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
C'est la solution usuelle pourtant, ton problème doit venir d'ailleurs
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Cela dépend du contexte.
- Pour les Ids de ressources un cast suffit (ou MAKEINTRESOURCE(Id))
- Pour avoir l'équivalent de l'entier dans une chaîne de caractères (LPCTSTR est en fait un const char*) :
char szVal[16];
int val = 67;
itoa(val, szVal, 10);
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Si je fais le cast d'une variable int en LPCTSTR sous Dev-C++, il
accepte de compiler mais une erreur survient : "Asill.exe a rencontré
un problème et doit fermer. Nous vous prions de nous excuser pour le
désagrément encouru."

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
C'est pour cela que j'ai dit que le contexte est important. Quelle fonction de l'API nécessite que tu fasses un cast ?
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
J'ai besoin de convertir un int en chaine pour inclure
cette chaine dans une autre chaine affichée dans une messagebox. l'Api
Msgbox a son paramètre Caption du type LPCTSTR.

Ou peut être est-il possible d'utiliser un autre type de string ? puis de la convertir en
LPCTSTR ?


Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Merci, ca marche impec.

Mais j'ai des autres questions :

Existe-t-il et quels sont les fonctions permettant de rechercher dans
une chaine, extraire la droite, la gauche ou le milieu de la chaine ?
(En fait les fonction équivalentes a Instr, Left, Right, Mid en Visual
Basic)

Pour contacéner deux chaine, est-il obligatoire d'utiliser l'api lstrcat ?



Merci encore.

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Avec MFC tu as les CString qui fournissent TrimRight, TrimLeft, Mid...

Pour concaténer 2 chaines :
- avec des classes du genre sitring, CString... l'opérateur + est redéfini donc on peut juste faire str1+str2.
- avec des char* purs, il faut utiliser strcat, lstrcat et les dérivés en faisant gaffe aux dépassements de buffers.
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Comment peut on et comment utiliser CString en Dev-C++ ?

Il faut définir quelque chose, puisque je peux actuellement pas l'utiliser (c'est inconnu par le compilateur).

Que sont les MFC exactement ?



Sinon, strcat fonctionne parfaitement.



J'ai aussi entendu parler d'une classe String pour gérer les chaines ?
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
MFC : Microsoft Fundation Class : encapsulation de l'API Win32 dans des classes, utilisable uniquement avec Visual Studio.
Donc avec Dev-cppn, pas de MFC ni de CString
en C++, il y a la classe string du namespace std qui fait le même genre de truc.
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Merci bien. Encore une dernière question :

Je ne trouve pas la classe string. Mais ce cache donc-t-elle ? Dans un
header file ? Ou ne peux on également pas l'utiliser avec Dev-cpp ?

Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
C'est bon ça marche.
Merci encore.