Bonjour,

Je suis sur un probleme que je n'arrive pas a resoudre, lorsque j'execute le code suivant, en retour j'ai toujours "D".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
string_format("%s", "D:\\rep1\\rep2\\rep3\\test.exe");
Le code de string format est le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
generic_string Compiler::string_format(const char * fmt, ...)
{
	const int BUF_SIZE = 2048;
	char textString[BUF_SIZE] = { '\0'};
 
    va_list args;
    va_start ( args, fmt );
    vsnprintf ( textString, BUF_SIZE, fmt, args );
    va_end ( args );
 //=> meme a ce niveau la j'obtiens "D" en unicode ou pas en unicode
#ifdef UNICODE
 
	WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance();
	const TCHAR * destW = wmc->char2wchar(textString, CP_ACP));	
	generic_string retStr = destW;
 
#else
 
	generic_string retStr  = textString;;						
#endif   
 
 
    return retStr;
 
}
La class unicode utilisé fontionne tres bien , je l'utilise partout dans mon code, ca ne viens pas de la, je pense que va_list et va_start on du mal en windows 64bit et en UNICODE.

J'ai essaye plusieurs code trouvés sur le net et ca me renvoi toujours la meme valeur

generic_string est défini comme tel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
typedef std::basic_string<TCHAR> generic_string;
je ne voit vraiment pas d'ou cela peut provenir.

Si vous avez une idée.

Merci de votre aide.