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 :

c++ std:string en hexad�cimal ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    412
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 412
    Par d�faut c++ std:string en hexad�cimal ?
    Hello

    tout est dans le titre:

    le probl�me a la base ,c'est les nom de fichier, vu qu'on peux y mettre casiment tout et n'importe quoi... je vai tout convertir en format hexa, sa devrai alors plus poser de probl�me. seulment voila on dirait que c'est faux ...
    voila un exemple:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <cstring>
    #include <exception>
    #include <iomanip>
    using namespace std;
     
    std::string toHex(const std::string& instr)
    {
    using namespace std;
    ostringstream oss;
    oss << hex << setw(2) << setfill('0');
    for(string::const_iterator i = instr.begin(); i != instr.end(); ++i)
    {
    if(i != instr.begin())
    {
    oss << ":";
    }
    //oss << "0x" << static_cast<unsigned short>(*i);
    oss << "" << static_cast<unsigned short>(*i);
    }
    return oss.str();
    }
     
    int main()
    {
    std::cout << toHex("Ma�anaDB.pdb (codage non valide)") << std::endl;
    return 0;
    }
    j'obtien:
    004d:61:ffef:ffbf:ffbd:61:6e:61:44:42:2e:70:64:62:20:28:63:6f:64:61:67:65:20:6e:6f:6e:20:76:61:6c:69:64:65:29
    je me demande si la sortie est vraiment valable car:

    004d:61:ffef:ffbf:ffbd
    semble erronn�e c'est lier aux caract�re : ici j'ai l'impretion que apres le Ma sa pose souci si quelqu'un a une id�e je suis preneur

    Merci d'avance

  2. #2
    Membre tr�s actif

    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par d�faut
    Bonjour,

    en fait il n'y a que cette portion de string qui foire :
    M(4d)a(61)�(ffef:ffbf:ffbd)a(61)n(6e)a(61)D(44)B(42)...

    je penses que cela vient des caract�res sp�ciaux ou des expressions HTML dans les string. Ton truc n'est pas interpr�t� caract�re par caract�re.

    regarde ici et essaye de remplacer ton expression � par \uFFFD

  3. #3
    Membre �m�rite

    Profil pro
    Inscrit en
    D�cembre 2008
    Messages
    533
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 533
    Par d�faut
    Ca vaudrait peut-�tre le coup d'utiliser wchar_t :
    http://codepad.org/IdGEQfgp

    � vaut 0x00F1 en UTF-16 (le format de wchar_t) et j'obtiens effectivement 00f1

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    412
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 412
    Par d�faut
    Citation Envoy� par cob59 Voir le message
    Ca vaudrait peut-�tre le coup d'utiliser wchar_t :
    http://codepad.org/IdGEQfgp

    � vaut 0x00F1 en UTF-16 (le format de wchar_t) et j'obtiens effectivement 00f1
    voila ce que sa donne avec le code que tu a coller: j'ai mis uniquement ce caract�re pas le reste de la phrase:
    regarde ici et essaye de remplacer ton expression � par \uFFFD
    Euh j'ai tester mai Cela ne change rien ??

    Merci de m'aider

  5. #5
    Membre exp�riment�

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Par d�faut
    Bonjour,

    J'ai essay� le code que tu donnes dans ton premier post avec Visual C++ 2008 et le r�sultat que j'obtiens est diff�rent du tien :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    004d:61:26:23:36:35:35:33:33:3b:61:6e:61:44:42:2e:70:64:62:20:28:63:6f:64:61:67:65:20:6e:6f:6e:20:76:61:6c:69:64:65:29
    Je suspecte donc une diff�rence d'encodage des caract�res entre ta plateforme et la mienne. �a serait bien que tu nous �claire sur le contexte que tu utilises (plateforme, compilateur, encodage)...

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    412
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 412
    Par d�faut
    Citation Envoy� par Niark13 Voir le message
    Bonjour,

    J'ai essay� le code que tu donnes dans ton premier post avec Visual C++ 2008 et le r�sultat que j'obtiens est diff�rent du tien :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    004d:61:26:23:36:35:35:33:33:3b:61:6e:61:44:42:2e:70:64:62:20:28:63:6f:64:61:67:65:20:6e:6f:6e:20:76:61:6c:69:64:65:29
    Je suspecte donc une diff�rence d'encodage des caract�res entre ta plateforme et la mienne. �a serait bien que tu nous �claire sur le contexte que tu utilises (plateforme, compilateur, encodage)...
    Dac
    Debian squeez , en utf8
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ii  g++                                      4:4.4.5-1                         The GNU C++ compiler
    ii  g++-4.4                                  4.4.5-8                           The GNU C++ compiler
    ii  gdb                                      7.0.1-2+b1                        The GNU Debugger
    ii  gdb-doc                                  7.1-1                             The GNU Debugger Documentation
    ii  gdbserver                                7.0.1-2+b1                        The GNU Debugger (remote server)
    ii  libeggdbus-1-0                           0.6-1                             D-Bus bindings for GObject
    ii  libgdbm3                                 1.8.3-9                           GNU dbm database routines (runtime version)
    ii  gcc                                      4:4.4.5-1                         The GNU C compiler
    ii  gcc-4.3                                  4.3.5-4                           The GNU C compiler
    ii  gcc-4.3-base                             4.3.5-4                           The GNU Compiler Collection (base package)
    ii  gcc-4.4                                  4.4.5-8                           The GNU C compiler
    ii  gcc-4.4-base                             4.4.5-8                           The GNU Compiler Collection (base package)
    ii  gcj-4.4-base                             4.4.5-2                           The GNU Compiler Collection (gcj base package)
    ii  gcj-4.4-jre
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $ locale
    LANG=fr_CH.UTF-8
    LANGUAGE=fr_CH:fr
    LC_CTYPE="fr_CH.UTF-8"
    LC_NUMERIC="fr_CH.UTF-8"
    LC_TIME="fr_CH.UTF-8"
    LC_COLLATE="fr_CH.UTF-8"
    LC_MONETARY="fr_CH.UTF-8"
    LC_MESSAGES="fr_CH.UTF-8"
    LC_PAPER="fr_CH.UTF-8"
    LC_NAME="fr_CH.UTF-8"
    LC_ADDRESS="fr_CH.UTF-8"
    LC_TELEPHONE="fr_CH.UTF-8"
    LC_MEASUREMENT="fr_CH.UTF-8"
    LC_IDENTIFICATION="fr_CH.UTF-8"
    voila je croit que tout y est

    Merci de m'avoir lu

Discussions similaires

  1. std::string to_string
    Par shirya dans le forum SL & STL
    R�ponses: 5
    Dernier message: 20/12/2005, 15h28
  2. R�ponses: 7
    Dernier message: 25/11/2005, 17h11
  3. R�ponses: 22
    Dernier message: 26/08/2005, 12h46
  4. cannot convert 'std::string' to 'System::String ^'
    Par broadhead dans le forum MFC
    R�ponses: 1
    Dernier message: 14/06/2005, 11h37
  5. std::string, operator =
    Par tut dans le forum SL & STL
    R�ponses: 10
    Dernier message: 05/11/2004, 12h07

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