Conversion int -> LPCTSTR

Résolu
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 - 17 mai 2005 à 18:06
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 - 18 mai 2005 à 13:29
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mai 2005 à 19:07
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*"
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 mai 2005 à 12:17
#include

std::string

ou alors mettre 'using namespace std;' au début et utiliser directement string.
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 mai 2005 à 18:35
C'est la solution usuelle pourtant, ton problème doit venir d'ailleurs
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mai 2005 à 18:38
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);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
17 mai 2005 à 18:39
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."

0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mai 2005 à 18:44
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 ?
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
17 mai 2005 à 18:59
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 ?


0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 08:49
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.

0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 mai 2005 à 09:20
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.
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 11:08
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 ?
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 mai 2005 à 11:12
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.
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 12:14
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 ?

0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 13:29
C'est bon ça marche.
Merci encore.
0
Rejoignez-nous