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++ Discussion :

Conversions : String->int et int->TCHAR


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut Conversions : String->int et int->TCHAR
    Bonjour,

    Dans un projet MFC, sous Visual Studio 2005, j'ai besoin de r�cup�rer convertir un string, entr� par l'utilisateur en format hexad�cimal en int, de faire quelques traitement dessus, puis de le passer en TCHAR.

    Par exemple :

    L'utilisateur entre la valeur AD5, dans un Edit Control (MFC).
    Je r�cup�re cette valeur dans un string (je sais faire)
    Je convertis cette valeur en int, sous forme d�cimale : 2773 (je sais pas faire )
    Op�rations �ventuelles
    Je convertis la valeur obtenue en TCHAR, sous forme h�xad�cimale (je sais pas faire ).

    La valeur entr�e sera comprise entre 0000 et FFFF.

    J'ai d�j� une fonction pour convertir les strings en int, mais elle ne marche pas pour de l'h�xa :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    int StringToInt(std::string in)
    {
    	int out;
    	istringstream iss( in );
    	iss>>out;
    	return out;
    }
    Le but est de cr�er un fichier avec comme nom la valeur h�xa modifi�e, il n'est peut �tre pas n�cessaire de faire tout �a. Si quelqu'un a une autre solution, je veux bien aussi.

    Merci d'avance pour votre aide, je n'ai aucune id�e de comment faire ces conversions...

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Citation Envoy� par CyberSlan Voir le message
    J'ai d�j� une fonction pour convertir les strings en int, mais elle ne marche pas pour de l'h�xa
    http://cpp.developpez.com/faq/cpp/?p...am_hexa_to_int


    Pour convertir en "TCHAR", il te faut un tableau de TCHAR pour stocker le resultat. Les CString des MFC ont tout ce qu'il faut pour cela (=> FAQ VC++).

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    Merci beaucoup,

    Je regarde �a d�s que possible (ce soir, mais peut �tre tard)

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    Pour convertir en "TCHAR", il te faut un tableau de TCHAR pour stocker le resultat. Les CString des MFC ont tout ce qu'il faut pour cela (=> FAQ VC++).
    C'est possible d'avoir un peu plus de pr�cision?

    Je ne vois pas le lien avec les CString pour passer d'un int en TCHAR
    Je n'ai pas trouv� non plus dans la faq comment convertir de CString en TCHAR.

    Sinon, merci pour le lien pour l'hexa, �a marche correctement.

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Un TCHAR, c'est un seul caract�re.
    Que veux-tu dire exactement par "convertir en TCHAR" ?
    • Faire un TCHAR dont le code de caract�re est �gal � la valeur du int?
    • Formater le int en d�cimal dans une cha�ne de TCHARs ?
    • Formater le int en hexad�cimal dans une cha�ne de TCHARs ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    D�sol�, j'avais oubli� de revenir surveiller ce sujet.

    Merci pour votre aide

  7. #7
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par d�faut
    Citation Envoy� par Aurelien.Regat-Barrel Voir le message
    http://cpp.developpez.com/faq/cpp/?p...am_hexa_to_int


    Pour convertir en "TCHAR", il te faut un tableau de TCHAR pour stocker le resultat. Les CString des MFC ont tout ce qu'il faut pour cela (=> FAQ VC++).
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef std::basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> > tstring;
    Pour cr�er un type proche de CString nomm� tstring.

    Personnellement, j'utilise un petit fichier header (en PJ). Bien �videmment, le tout n'a �t� test� que sous Windows avec VC++, mais les adaptations � faire pour le compiler avec d'autres syst�mes sont mineures (d'apr�s moi).
    Fichiers attach�s Fichiers attach�s
    [FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
    Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
    Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  8. #8
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ce header m'a l'air sympa, mais j'ai deux remarques:
    • Il me semble que les defines de TEXT() et _T() n�cessitent de passer par une macro interm�diaire, pour certains cas de figures.
    • Ton utilisation de wcstombs() n'est pas safe, car un caract�re wchar_t peut se r�soudre en deux char. Au lieu de arg.length(), tu dois r�server wcstombs(NULL, arg.c_str(), arg.length()) caract�res�. D'ailleurs, je le ferais aussi pour les conversions dans l'autre sens...
      �en plus du terminal, que le constructeur de string ajoute automatiquement.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Une variante:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef std::basic_string<TCHAR> string_t;
    J'avais opte pour string_t au lieu de "tstring" parce que applique aux flux comme ostream, ca fait "tostream" -> "to stream"...

  10. #10
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    Ce header m'a l'air sympa, mais j'ai deux remarques:
    • Il me semble que les defines de TEXT() et _T() n�cessitent de passer par une macro interm�diaire, pour certains cas de figures.
    Je ne vois pas. Soit ces macros sont d�finies et je ne les red�fini pas, soit elles ne le sont pas et je les d�clare. Ensuite, leur d�finition d�pends de l'existence de la d�finition de UNICODE, qui est d�finit (ou non) par Visual C++ (parce que utilis� dans windows.h � outrance).
    Citation Envoy� par M�dinoc Voir le message
    • Ton utilisation de wcstombs() n'est pas safe, car un caract�re wchar_t peut se r�soudre en deux char. Au lieu de arg.length(), tu dois r�server wcstombs(NULL, arg.c_str(), arg.length()) caract�res�. D'ailleurs, je le ferais aussi pour les conversions dans l'autre sens...
      �en plus du terminal, que le constructeur de string ajoute automatiquement.
    C'est effectivement une m�thode bien meilleure. A ma d�charge, je n'ai pas touch� � ce fichier depuis des ann�es, et je m'en sers peu (je fais directement tout en wstring maintenant). La question qui s'�tait pos� � l'�poque provenait de notre gestion des langues dans une application bien particuli�re (japonais en MBCS et russe en unicode, dans la m�me application).
    [FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
    Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
    Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  11. #11
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par Emmanuel Deloget Voir le message
    Je ne vois pas. Soit ces macros sont d�finies et je ne les red�fini pas, soit elles ne le sont pas et je les d�clare. Ensuite, leur d�finition d�pends de l'existence de la d�finition de UNICODE, qui est d�finit (ou non).
    Ce que je voulais dire, c'est que leur d�finition par d�faut utilise ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    #ifdef _UNICODE
    #define __T(x) L ## x
    #else
    #define __T(x) x
    #endif
    #define _T(x) __T(x)
    #define TEXT(x) __T(x)
    Alors que toi, tu ne passes pas par une macro interm�diaire. Et il me semble que �a fait une diff�rence, notamment si tu fais TEXT(UNE_MACRO). Donc, je pense que tu devrais faire la m�me chose que Microsoft si tu veux �tre s�r de ne rien perturber...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Transformer (int ann�e, int mois, int jour) en millisecondes
    Par Logic_613 dans le forum D�buter avec Java
    R�ponses: 3
    Dernier message: 24/04/2012, 11h08
  2. [C#] Conversion string to int
    Par OpenGG dans le forum C#
    R�ponses: 2
    Dernier message: 23/08/2006, 19h08
  3. Probl�me de conversion string->int
    Par seheiahs dans le forum Langage
    R�ponses: 4
    Dernier message: 28/06/2006, 10h42
  4. conversion string vers int
    Par mathher dans le forum C++
    R�ponses: 4
    Dernier message: 14/04/2006, 17h52
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    R�ponses: 3
    Dernier message: 26/05/2004, 15h00

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