bonjour !
je souhaite convertir une chaine de caractere en un wxString.
comment faire ???
merci
bonjour !
je souhaite convertir une chaine de caractere en un wxString.
comment faire ???
merci
sur cette doc j'ai trouvé ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 wxString my_string; my_string << wxT("channels") << '/' << wxT("hello");
Hiko-seijuro
n'cha - hoyoyo gang
espace perso : http://hiko-seijuro.developpez.com
dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
consulter les faqs : http://www.developpez.com/faq
PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL
merci j'essai ça demain et je te tiens au courant
wxString possède tout ce qu'il faut pour ce genre de conversion : constructeur, opérateur d'affectation, et encore plein de choses.
De plus la documentation est toujours très bien faite, ainsi que le wiki comme tu as pu le constater. N'hésite pas à aller y faire un tour.
Bref tu as de quoi faire
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
merci j'ai reussi ! meme si j'ai utiliser une autre methode que celle de hiko-seijuro, trouvée grace a son lien.
@c++
Bonjour. J'ai un problème du genre aussi... J'ai épluché tous les wikis, tutoriels et APIs imaginables mais rien ne fonctionne.
Je voudrai convertir un "std::string" en "wxString".
Merci.
Il faut passer par l'intermédiaire d'un const char* std::string::c_str(). Après, avec un const char*, ton wxString se construit tout seul.
Il me semble même qu'il y a une option de compilation pour que wxString soit constructible / convertible directement avec std::string, non ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Salut, ben j'ai essayé déjà...
Si je fais:
j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 string bar = "hello"; wxString foo = bar.c_str();
et si je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 main.cpp:163: error: conversion from const char* to wxString is ambiguous /usr/include/wx-2.6/wx/string.h:642: note: candidates are: wxString::wxString(wxChar, size_t) <near match> /usr/include/wx-2.6/wx/string.h:632: note: wxString::wxString(int) <near match>
j'ai aussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 string bar = "hello"; wxString foo = wxString(bar.c_str());
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 main.cpp:163: error: call of overloaded wxString(const char*) is ambiguous /usr/include/wx-2.6/wx/string.h:670: note: candidates are: wxString::wxString(const wxWCharBuffer&) <near match> /usr/include/wx-2.6/wx/string.h:642: note: wxString::wxString(wxChar, size_t) <near match> /usr/include/wx-2.6/wx/string.h:640: note: wxString::wxString(const wxString&) <near match> /usr/include/wx-2.6/wx/string.h:632: note: wxString::wxString(int) <near match>
Tu utilises quelle version de wxWidget ? Tu n'as pas ces fonctions membres ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 wxString(const char* psz, size_t nLength = wxSTRING_MAXLEN); wxString& operator =(const char* psz);
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Version 2.6.1.2.
Ces fonctions ont été ajoutées dans la dernière version?
En tout cas, la 2.6.1.2 c'est la dernière pour ma distribution...
Ces fonctions apparaissent déjà dans la documentation de la version 2.4.1. Tu as vérifié tes en-têtes pour voir ce que ton wxString avait comme constructeurs et opérateurs d'affectation ?
Tu utilises quel compilo ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Oui, ce constructeur et cet opérateur sont bien présents dans "wx/string.h"...
J'utilise gcc (g++) sous Ubuntu/Debian Sid. Merci.
Au cours de nombreuses recherches je suis tombé là dessus:
Je suis bien en UTF-8, il serait donc normal que cela foire... Par contre pour sa solution qui est censée marcher à tous les coups ben la fonction wxConcLibcF8WX n'est pas reconnue... Bouh...> string myString = "test";
> wxString yourString = myString.c_str();
>
> > i want to convert a std::string to a wxString
> > how can i do that
> >
> > string myString = "test";
> > wxString yourString = myString; //doesn't work
> >
ABove solution won't work in Unicode builds, AFAIK.
string myString;
wxString yourString = wxConvLibcF8.cMB2WX( myString.c_str() );
will work in any build.
regards,
David Schalig
Ah oui effectivement, si l'unicode s'en mêle... Tu peux utiliser wstring dans ce cas, et de manière générale tous les équivalents STL qui gèrent les caractères longs (wfstream, wostream, ...). Ca t'évitera de devoir faire des conversions multi byte -> wide char.
Pour ce qui est de faire marcher cette conversion avec wxWidgets, regarde la documentation de ta version, tout devrait y être expliqué.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Salut,
Qu'entends-tu par "tu peux utiliser wstring dans ce cas"?
Merci.
Ben... Utiliser wstring, dont la fonction c_str() te renverra un pointeur sur chaîne longue. D'ailleurs si tu es en unicode, à quel moment as-tu besoin de manipuler des chaînes courtes ?Envoyé par aurelsty
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Ben ce sont des chaînes qui viennent d'un fichier texte en fait...
Ok donc tu as bien des conversions à faire. Comme je ne l'ai jamais fait avec wxWidgets, je ne peux que te conseiller d'éplucher la documentation, qui j'en suis sûr indique parfaitement comment procéder.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Effectivement... j'avais pourtant déjà cherché des heures sérieusement.
Sur un wiki (http://wiki.codeblocks.org/index.php...ode_Standards).
En déclarant:
On peut effectuer la conversion de cette manière:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ifdef wxUSE_UNICODE #define _U(x) wxString((x),wxConvUTF8) #define _UU(x,y) wxString((x),y) #else #define _U(x) (x) #define _UU(x,y) (x) #endif
Je ne comprend pas vraiment mais ça marche... Y'a plus qu'à espérer que ça marche sur toutes les plateformes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 const char* incompatible = "This is an incompatible string"; wxString compatible = _U(incompatible);
Merci bien pour ton aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager