Bonjour à tous,
Voici un petit casse-tête dont je ne me sors pas.
Je tente de récupérer un wstring dans un wchar, et le wchar résultant n'est pas conforme, pourtant la taille semble correcte.
Je m'explique : je m'attend à recevoir la chaine "Pouet", or je ne reçois que "P".
Et là, le miracle arrive :
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 WCHAR wcTemp[STRING_MAXIMAL_SIZE]; std::wstring Name; // Ceci est rempli ailleurs, et vaut "Pouet" // Test 1 swprintf_s(wcTemp, STRING_MAXIMAL_SIZE, L"%s", Name.c_str()); // Test 2 wcscpy_s(wcTemp, STRING_MAXIMAL_SIZE, Name.c_str()); if (wcslen(wcTemp) < 3) { WCHAR Plop[10]; swprintf_s(Plop, 10, L"%d", my_data->my_parameter.Name.size()); MessageBox(hwnd, wcTemp, Plop, MB_OK); } // Même sur le test 3: if (wcslen(wcTemp) < 3) { MessageBox(hwnd, wcTemp, my_data->my_parameter.Name.c_str(), MB_OK); }
Tests 1 et 2, la message box m'affiche, en titre, 5, et dans le texte : "P"
Test 3, la messagebox m'affiche, en titre, "P", et dans le texte : "P".
Je ne comprend pas.
Petites précisions:
1°) Ceci est fait sous WinCE6.0
2°) Ces modifications sont faites dans des threads gérants des lignes (un thread par ligne), et cela n'arrive très généralement qu'au bout de 146 lignes... Toutes les autres lignes sont bonnes !
3°) Lorsque j'ai déjà affiché une première fois, pas de problème lors du second affichage.
Si vous avez une idée, ou besoin de précisions, n'hésitez pas
Merci
Partager