2010-11-11 4 views
1

Mon application console tente d'écrire un entier à la console:Utiliser CString pour convertir int et envoyer à la console

int i = 170; 
CString cs; 
cs.Format(L"%d", i); 
wcout << cs << endl; 

Je me attends « 170 » à écrire à la console, mais ce qui se passe est « 00E21280 » . C'est l'adresse . J'ai vérifié que "170" est enregistré à cet emplacement de mémoire. Des idées?

+0

Signaler un contenu suspect std :: string? – Puppy

+0

@DeadMG: Jim Fell doit être fan de buggy, de hacky, de technologie ancienne et non portable. –

+0

@DeadMG, je ne pense pas que vous pourriez utiliser std :: string pour cela, sauf si vous utilisiez aussi Boost Format. –

Répondre

2

Vous devez le transformer en chaîne, sinon il le traite comme un pointeur.

wcout << (PCTSTR)cs << endl; 
+2

Je pense qu'il devrait être wcout << (LPCTSTR) cs << endl; mais je n'ai pas assez de rep pour éditer votre post. +1 à vous quand même. – pstrjds

+0

Cela a fait l'affaire. Je vous remercie! –

+0

LPCTSTR est une utilisation âgée, d'une certaine utilité lorsque nous sommes passés de Win16. Il n'y a pas besoin de nos jours pour l'annexe préfixée "L" :) –

1

Essayez:

wcout << (LPCTSTR)cs << endl;