Conversion String -> WCHAR*

seb2086
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
- 21 juil. 2005 à 09:40
cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
- 7 oct. 2011 à 13:20
Quelqu'un saurait-il comment convertir une variable de type String en WCHAR* ?

15 réponses

cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
7 oct. 2011 à 13:17
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;
}
1
cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
7 oct. 2011 à 13:20
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;
} 
1
ricky78
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

21 juil. 2005 à 15:03
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
0
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
21 juil. 2005 à 17:21
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SnOOpss
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

21 juil. 2005 à 18:40
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);
0
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
21 juil. 2005 à 18:55
wchar *fic = L"D:\\c++\\mygif\\hearts.gif";

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

22 juil. 2005 à 07:26
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.
0
seb2086
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

22 juil. 2005 à 10:10
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 !
0
SnOOpss
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

23 juil. 2005 à 09:59
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);
0
seb2086
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

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

23 juil. 2005 à 16:22
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 ?
0
seb2086
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

4 août 2005 à 09:15
Voila le message d'erreur :

error C2664: 'IDirectMusicLoader8::LoadObjectFromFile' : impossible de convertir le paramètre 3 de 'std::string' en 'WCHAR *'
0
cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
7 oct. 2011 à 13:14
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;
}
0
cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
7 oct. 2011 à 13:18
j'espère que ça va servir
0
cs_jeron
Messages postés
29
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
25 juillet 2014
2
7 oct. 2011 à 13:19
vive cpp france
0