IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

string vers WideString


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Par d�faut string vers WideString
    Je voudrais savoir si �crire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    string s="...";
    WideString ws(s.c_str());
    �quivaut � l'utilisation de ::MultiByteToWideChar avec la page de code 1252 ?

    J'ai une fonction string_to_wstring :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    std::wstring string_to_wstring(unsigned int codePage, std::string const& src) {
    		if(src.size()>0) {
    			int length = ::MultiByteToWideChar( codePage, 0, src.data(), src.size(), NULL, 0 );
    			std::vector<wchar_t> buffer(length);
    			::MultiByteToWideChar( codePage, 0, src.data(), src.length(), &buffer[0], length);
    			return std::wstring(buffer.begin(), buffer.end());
    		}
    		else
    			return std::wstring();
    	}
    Est-ce que le constructeur de WideString r�alise la m�me chose ?
    Merci � vous

  2. #2
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Le type WideString est un type Delphi qui encapsuler l'allocation m�moire des chaines sur le COM
    le classe WideString reprend en C++ les fonctionnalit�s du type natif WideString du Delphi pour compatibilit� avec certains modules comme l'Import de TLB (COM, ActiveX...)

    D'un point de vue conversion char<->wchar_t, c'est la m�me chose
    D'un point de vue m�moire, c'est fondamentalement diff�rent mais ce n'est pas forc�ment un probl�me

    tu utilises la variante constructeur __fastcall WideString(const char* src);Selon la version de Delphi (2009+), le type String est en r�alit� d�j� une encapsulation de wchar_t sous la forme d'une UnicodeString

    Sur les Delphi plus anciens String est un AnsiString

    Ne pas confondre String et std::string, je n'arrive pas bien � comprendre l'utilisation du second dans une application VCL sous C++Builder � part une complexit� inutile ou l'utilisation d'une librairie utilisant ce type
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Par d�faut
    Pourquoi utiliser std::string ?
    Parce que la partie "interface" de mon application est secondaire.
    Sinon, j'utilise essentiellement la STL, boost, etc...
    Je suis d�sol�, mais je n'ai pas bien compris ta r�ponse
    En gros, si j'�cris :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    std::string x="une chaîne quelconque";
    WideString w(x.c_str());
    1/ est-ce que c'est correct ?
    2/ est-ce que en interne �a correspond � la transformation char => t_wchar
    avec la fonction string_to_wstring que j'ai indiqu�e ?

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Citation Envoy� par loubigou Voir le message
    Pourquoi utiliser std::string ?
    Parce que la partie "interface" de mon application est secondaire.
    Sinon, j'utilise essentiellement la STL, boost, etc...
    la STL n'emp�che pas l'utilisation des types RTL de C++Builder\Delphi
    Surtout que tu veux utiliser le type WideString qui est justement une partie de la RTL
    Il est fort possible que tu utilises un code plus complexe en STL ou en Boost qu'un code directement orient� RTL\VCL surtout si tu manipules des objets tel que des TDataSet ou tout TObject !

    Citation Envoy� par loubigou Voir le message
    Je suis d�sol�, mais je n'ai pas bien compris ta r�ponse
    Pourtant j'ai �t� clair :
    Citation Envoy� par ShaiLeTroll Voir le message
    D'un point de vue conversion char<->wchar_t, c'est la m�me chose
    D'un point de vue m�moire, c'est fondamentalement diff�rent mais ce n'est pas forc�ment un probl�me

    Citation Envoy� par loubigou Voir le message
    1/ est-ce que c'est correct ?
    Oui

    Citation Envoy� par loubigou Voir le message
    2/ est-ce que en interne �a correspond � la transformation char => t_wchar
    avec la fonction string_to_wstring que j'ai indiqu�e ?
    Tout d�pend ce que l'on appel en interne !
    Oui cela converti mais l'allocation m�moire est diff�rente !
    En plus, il suffit de lire le code de wstring.cpp

    En XE3 :
    C'est tr�s lourd le constructeur de WideString appel WideFromPChar qui
    qui utilise les conversions implicites de Delphi
    les conversions implicites sont g�r�s par _LStrFromChar\_WStrFromChar qui utilise UnicodeFromLocaleChars
    Ce fonction est con�u pour �tre multi-plateforme (g�n�ricit� = complexit�)
    Cela appel au final MultiByteToWideChar (Win) ou UnicodeFromLocaleChars (wrapper pour iconv() sous Mac)

    Une fois la conversion faite, cela appel en plus SysAllocStringLen pour copier la chaine wchar_t depuis la m�moire du processus vers la m�moire COM !
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. transfert d'une variable string vers rapport RAVE
    Par segnac dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 30/11/2013, 07h24
  2. String vers byte[]
    Par EpOnYmE187 dans le forum Langage
    R�ponses: 8
    Dernier message: 28/10/2011, 11h23
  3. String vers un Double
    Par hugoferd dans le forum Langage
    R�ponses: 1
    Dernier message: 16/10/2005, 20h46
  4. [C#] Fonction pour convertir string[] vers ArrayList
    Par luim�me dans le forum Windows Forms
    R�ponses: 6
    Dernier message: 07/04/2005, 13h25
  5. [STRING]Contenu d'un String <> vers &lt; et &g
    Par TreizeSegments dans le forum Entr�e/Sortie
    R�ponses: 4
    Dernier message: 03/08/2004, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo