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".
Le code de string format est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string_format("%s", "D:\\rep1\\rep2\\rep3\\test.exe");
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.
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; }
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:
je ne voit vraiment pas d'ou cela peut provenir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2typedef std::basic_string<TCHAR> generic_string;
Si vous avez une idée.
Merci de votre aide.
Partager