Conversion String -> WCHAR*

Signaler
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
-
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
-
Quelqu'un saurait-il comment convertir une variable de type String en WCHAR* ?

15 réponses

Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
et comment convertir un string en const wchar_t*

comment convertir un string en wchar_t * ?

#include <string.h>
#include <wchar.h>

void wtoc(wchar_t *toConvert, char *str) {
int count = 0;
int len = wcslen(toConvert);

for(; count < len; count++) {
str[count] = (char) toConvert[count];
}
}

void ctow(const char *toConvert, wchar_t *wstr) {
int count = 0;
int len = strlen(toConvert);

for(; count < len; count++) {
wstr[count] = (wchar_t) toConvert[count];
}
}

void convert(wchar_t wstr[20]) {
char copy[20];
wtoc(wstr, copy);
printf("covertion %s\n";, copy); //élimier cela si vous voulez que ce soit plus clair
}

int main() {
string phrase = "exemple a convertir";
const char *Fichier = new char[phrase.size()+1];
Fichier = phrase.c_str(); //


wchar_t wstr[20];
ctow(Fichier, wstr);
convert(wstr);

cout<< wstr <<"contient la phrase.Elle à été convertit en const wchart * !" << endl;
return 1;
}
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
vous etre cool
et comment convertir un string en const wchar_t*

comment convertir un string en wchar_t * ?

#include <string.h>
#include <wchar.h>

void wtoc(wchar_t *toConvert, char *str) {
int count = 0;
int len = wcslen(toConvert);

for(; count < len; count++) {
str[count] = (char) toConvert[count];
}
}

void ctow(const char *toConvert, wchar_t *wstr) {
int count = 0;
int len = strlen(toConvert);

for(; count < len; count++) {
wstr[count] = (wchar_t) toConvert[count];
}
}

void convert(wchar_t wstr[20]) {
char copy[20];
wtoc(wstr, copy);
printf("covertion %s\n";, copy); //élimier cela si vous voulez que ce soit plus clair
}

int main() {
string phrase = "exemple a convertir";
const char *Fichier = new char[phrase.size()+1];
Fichier = phrase.c_str(); //


wchar_t wstr[20];
ctow(Fichier, wstr);
convert(wstr);

cout<< wstr <<"contient la phrase.Elle à été convertit en const wchart * !" << endl;
return 1;
} 
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

essaye ça

int main()
{
using namespace std;

string str = "une chaîne de caractères";
// créer le buffer pour copier la chaîne
size_t size = str.size() + 1;
char * buffer = new char[ size ];
// copier la chaîne
strncpy( buffer, str.c_str(), size );
// utiliser le buffer
cout << buffer << '\n'; // "une chaîne de caractères"
// libérer la mémoire
delete buffer;
}

TOCHE
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
ricky78: WCHAR* = wchar_t*, pas char*

utilise plutot un wstring dans ce cas, c'est plus logique: c_str() te donnera un wchar_t* et non un char*
Sinon tu copie les caractères un par un, en castant de char à wchar_t
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Moi j'ai fait ca pour convertir char * vers Wchar si ca peut t 'aider !!

char * fic = "D:\\c++\\mygif\\hearts.gif";



WCHAR wideChar2[256];

MultiByteToWideChar(CP_ACP, 0, fic, strlen(fic)+1, wideChar2, 256);
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
wchar *fic = L"D:\\c++\\mygif\\hearts.gif";

tu connais?
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Oui vechio mais en fait la variable *fic m'etait repassé en parametre
sous la forme char * c'est pour ca que j'ai utilisé cette fonction.
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

Merci à tous pour vos réponse en fait j'ai deja réussi à convertir ma variable string en WCHAR* mais je passe par deux conversion :

// Conversion string -> CString (Pour le nom du fichier audio)
CString str (sNomFichier.c_str()) ;


// Conversion CString -> WCHAR*
LPWSTR Fichier = new WCHAR[255];
LPTSTR lpStr = str.GetBuffer( str.GetLength() );
int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, lpStr, -1, Fichier, nLen);

Et moi ce que je voudrait c'est d'éviter de convertir en Cstring
Si vous pouvait m'aider Merci !
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Peut etre

String sNomFichier;

WCHAR wideChar2[256];

MultiByteToWideChar(CP_ACP, 0, sNomFichier.c_str(), sNomFichier.size()+1, wideChar2, 256);



ou a la fin

MultiByteToWideChar(CP_ACP, 0, sNomFichier.c_str(), strlen(sNomFichier.c_str())+1, wideChar2, 256);
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

Ca ne fonctionne pas est-ce que tu pourrait m'expliquer merci.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Ben je croyais que .c_str() permettais de changer une string en char
* j'ai du faire un faute de syntaxe ou je me planter de commande
!!

C'est quoi le message d erreur ?
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

Voila le message d'erreur :

error C2664: 'IDirectMusicLoader8::LoadObjectFromFile' : impossible de convertir le paramètre 3 de 'std::string' en 'WCHAR *'
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
puisque personne n'a trouvé et que j'ai trouvé :

comment convertir un string en wchar_t * ?

#include <string.h>
#include <wchar.h>

void wtoc(wchar_t *toConvert, char *str) {
int count = 0;
int len = wcslen(toConvert);

for(; count < len; count++) {
str[count] = (char) toConvert[count];
}
}

void ctow(char *toConvert, wchar_t *wstr) {
int count = 0;
int len = strlen(toConvert);

for(; count < len; count++) {
wstr[count] = (wchar_t) toConvert[count];
}
}

void convert(wchar_t wstr[20]) {
char copy[20];
wtoc(wstr, copy);
printf("covertion %s\n";, copy); //élimier cela si vous voulez que ce soit plus clair
}

int main() {
string phrase = "exemple a convertir";
const char *Fichier = new char[phrase.size()+1];
Fichier = phrase.c_str(); //


wchar_t wstr[20];
ctow(Fichier, wstr);
convert(wstr);

cout<< wstr <<"contient la phrase.Elle à été convertit en const wchart * !" << endl;
return 1;
}
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
j'espère que ça va servir
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
vive cpp france