Convertir char* wchar* en C
Je voudrais convertir un char*
chaîne wchar*
chaîne de caractères en C.
J'ai trouvé beaucoup de réponses, mais la plupart d'entre eux sont pour le C++. Pourriez-vous m'aider?
Grâce.
Qu'est-ce que le codage d'origine dans votre
Waouh... j'ai pensé
Il n'est pas nécessairement de 2. Elle est mise en œuvre définies. Si la programmation sous Windows, il a une taille de deux octets et est titulaire d'UTF-16, avec double wchar_t pour les paires de substitution.
o__O j'ai fait pas sais que c'est de la mise en œuvre définies par l'... intéressant, merci pour l'info.
C'est sur un système unix, donc je suppose qu'il n'a pas d'importance non ?
char*
? UTF8? ANSI? Qu'est-ce que le sizeof(wchar)
sur votre système et ce que le codage est-il fier? UCS-2 (16 bits)? UCS-4 (32 bits)?Waouh... j'ai pensé
sizeof(wchar)
était toujours à 2, non?Il n'est pas nécessairement de 2. Elle est mise en œuvre définies. Si la programmation sous Windows, il a une taille de deux octets et est titulaire d'UTF-16, avec double wchar_t pour les paires de substitution.
o__O j'ai fait pas sais que c'est de la mise en œuvre définies par l'... intéressant, merci pour l'info.
C'est sur un système unix, donc je suppose qu'il n'a pas d'importance non ?
OriginalL'auteur Crupuk | 2011-01-28
Vous devez vous connecter pour publier un commentaire.
Essayer
swprintf
avec le%hs
drapeau.Exemple:
Je pense que cette réponse pourrait être très utile, cependant j'ai trouvé que swprintf pourrait avoir 2 interfaces possibles, pourriez-vous s'il vous plaît jeter un oeil à cette question? stackoverflow.com/q/17716763/2436175
l'interface qui nécessite la longueur de la mémoire tampon est le portable.
Il ne compile pas sur Mingw 4.5.2 par exemple, si, malheureusement, n'est pas général!
c'est une bonne solution lorsque la compilation croisée pour mingw sur une plate-forme linux
OriginalL'auteur Nick Dandoulakis
setlocale()
suivie parmbstowcs()
.Oui, il y a évidemment plus de conversion de chaîne de caractères que l'appel d'une seule fonction. Mais je n'ai pas plus de détails car je pense que c'est de toutes les OP est à la recherche de...
L'imput viennent de LdapDirectory, donc je suppose que c'est une UTF8 ?
Il n'y a pas une telle chose comme une "chaîne ANSI". Cela ne fonctionnera que si la chaîne d'origine est dans le multi-octets format correspondant à l'ensemble de paramètres régionaux.
J'ai déjà trouvé cette fonction, mais je ne peux pas l'utiliser correctement, j'ai juste envie de coder une chaîne de caractères unicode pour l'envoyer dans un mail sous réserve d'en-tête. Merci à vous
OriginalL'auteur Mehrdad
ce que vous cherchez est
fonctionne comme la fonction de copie de char* char*
mais dans ce cas, vous êtes en train d'enregistrer dans un wchar_t*
OriginalL'auteur Franky Rivera
Si vous avez l'API Windows disponible, la fonction de conversion MultiByteToWideChar offre quelques configurable conversion de chaîne de caractères à partir de différents encodages UTF-16. Qui pourrait être plus approprié si vous ne vous inquiétez pas trop à propos de la portabilité et ne veulent pas comprendre exactement quelles sont les implications de différents paramètres régionaux sont à la chaîne de converison.
OriginalL'auteur Christoffer
si vous avez actuellement des caractères ANSI. il suffit d'insérer un 0 ('\0') avant chaque char et de les jeter à wchar_t*.
OriginalL'auteur mehrdad safa