Cela semble être une jolie question de softball, mais j’ai toujours du mal à regarder cette fonction parce qu’il semble y avoir beaucoup de variations en ce qui concerne le référencement de char et tchar.
MultiByteToWideChar mais aussi voir "Quelques-uns des pièges de MultiByteToWideChar" .
TCHAR est un typedef spécifique à Microsoft pour char ou wchar_t (un caractère large).
La conversion en caractère dépend de la nature de ces éléments. Si TCHAR est en fait un caractère, alors vous pouvez faire un casting simple, mais s'il s'agit vraiment d'un wchar_t, vous aurez besoin d'une routine pour convertir entre les jeux de caractères. Voir la fonction MultiByteToWideChar ()
Bien que dans cette situation particulière, je pense que le personnage de TChar est un personnage étendu, je n'aurai besoin de convertir que s'il ne l'est pas. que je dois vérifier en quelque sorte.
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
La chose intéressante à propos de cela est que les deux tailles des égaux sont des constantes, ce qui signifie que le compilateur gérera (et supprimera) les if (), et si elles sont égales, suppriment tout ce qui est entre les accolades
Il y a également quelques réponses dans ce post, surtout si vous recherchez une solution multiplate-forme:
Voici le code CPP qui duplique _TCHAR * argv [] en char * argn [].
Si vous adoptez l’ancien code sous Windows, l’utilisation simple est définie comme facultative dans le code.
Vous pouvez mettre la condition dans votre code
ifdef _UNICODE
{// AIME TCHAR IS LARGE CHAR} AUTRE {// AIME TCHAR IS CHAR}
Je réalise que c'est un vieux fil, mais il ne m'a pas donné la "bonne" réponse, donc l'ajoute maintenant.
La façon dont cela semble être fait maintenant consiste à utiliser la macro TEXT. L'exemple de FindFirstFile à msdn le montre bien. http://msdn.Microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx