Quel est le moyen le plus simple de convertir char [] en / depuis tchar [] en C / C ++ (ms)?

StackOverflow https://stackoverflow.com/questions/159442

  •  03-07-2019
  •  | 
  •  

Question

Cela semble être une jolie question de softball, mais j’ai toujours du mal à examiner cette fonction car il semble y avoir de nombreuses variations en ce qui concerne le référencement de char et tchar.

Était-ce utile?

Autres conseils

La méthode la plus simple consiste à utiliser les macros de conversion:

  • CW2A
  • CA2W
  • etc ...

MSDN

TCHAR est une typedef spécifique à Microsoft pour char ou wchar_t (un caractère large).

La conversion en caractère dépend de celui-ci. 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 ()

Il y a également quelques réponses dans ce post, surtout si vous recherchez une solution multiplate-forme:

Conversion UTF8 vers / depuis caractères étendus en format STL

  
    

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 le fait pas. que je dois vérifier en quelque sorte.

  
if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

La chose intéressante à ce sujet est que les deux tailles d’égal à égal sont des constantes, ce qui signifie que le compilateur gérera (et supprimera) le if (), et si elles sont égales, suppriment tout ce qui se trouve entre les accolades

Voici le code CPP qui duplique _TCHAR * argv [] en char * argn [].

http://www.wincli.com/?p=72

Si vous adoptez l'ancien code sous Windows, il suffit de définir les options mentionnées dans le code comme facultatives.

Vous pouvez mettre une condition dans votre code

ifdef _UNICODE

{// AIMEZ TCHAR IS WIDE CHAR}} SAUF {// AIMEZ TCHAR IS CHAR}

Je me rends compte que c’est un vieux fil, mais il ne m’a pas obtenu le "droit". répondez, alors l'ajoute maintenant.

Pour ce faire, utilisez la macro TEXT. L'exemple de FindFirstFile à msdn le montre bien. http://msdn.microsoft .com / fr-fr / bibliothèque / windows / desktop / aa364418% 28v = vs.85% 29.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top