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 :

remplacer caractère chaine


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut remplacer caractère chaine
    Salut à vous,

    je rencontre un petit soucis, je suis actuellement en train de réaliser un petit programme permettant de passer de U+10437 à D801 DC37 comme suit :

    U+10437 binaire=> 0001 0000 0100 0011 0111 binaire utf => 1101 1000 0000 0001 1101 1100 0011 0111 hexa => D801 DC37
    on doit ajouter 1101 11 selon le nombre d'octets. Jusque là tout va bien, cependant, je dois soustraire 0X10000 à 10437, mais j'aimerai le faire lorsque j'ai mon code en binaire donc 0001 0000 0100 0011 0111 - mes 0x10000




    comment puis-je faire ?

    merci
    Dernière modification par Invité ; 17/01/2015 à 15h38.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 479
    Par défaut
    UNICODE égale chaine de caractère donc, pourquoi ne pas utiliser tout simplement std::wstring.replace ???
    http://www.cplusplus.com/reference/s...tring/replace/

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Quel est le format d'origine, en fait?
    Souhaites-tu convertir de UTF-32 en UTF-16?

    Ou bien parser le texte "U+10437" (ou "\U010437") pour en faire de l'UTF-16?

    Dans tous les cas, le mieux est de faire ta soustraction avant de faire le reste de la conversion. Un truc du genre:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int codePoint = ... ; //0x10437
    if(codePoint > 0x00FFFF)
    {
    	int adjustedCodePoint = codePoint - 0x010000;
    	int low = adjustedCodePoint & 0x03FF;
    	int high = (adjustedCodePoint >> 10) & 0x03FF;
    	ajouterASortie(high | 0xD800);
    	ajouterASortie(low | 0xDC00);
    }
    else
    {
    	ajouterASortie(codePoint);
    }
    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.

Discussions similaires

  1. Réponses: 14
    Dernier message: 15/06/2007, 13h59
  2. remplacer une chaine de caractères avec sed
    Par salseropom dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/05/2007, 14h56
  3. JSP : comment remplacer une chaine de caractères par une autre
    Par techquos dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/12/2006, 09h37
  4. [Perl] Problème de remplacement de chaine de caractères
    Par LE NEINDRE dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2006, 09h28
  5. Réponses: 4
    Dernier message: 18/07/2006, 16h31

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