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

Discussion :

Conversion entre QChar et QString

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Conversion entre QChar et QString
    Bonjour ,

    J'essaie d'intégrer un programme en C++ dans Qt et il y a apparemment quelques soucis de convertions

    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
        void MaFenetre::crypter()
        {
            QString monTexte=m_zone1->toPlainText(); // Récupération du texte
            QString maCle=m_ligne1->text(); // Récupération de la clé
            for (int i=0 ; i<monTexte.length();i++)
            {
                int k=0;
     
                k=maCle[i%maCle.length()]%26;
                monTexte.at(i)=caesar(monTexte.at(i),k);
            }
            m_zone1->clear();
            m_zone1->setText(monTexte);
        }
        // ---------------------------------------------------------------------------------------
     
        QChar MaFenetre::caesar(QChar c,int cle)
        {
         if('a' <= c && c <='z')
          return (c-'a'+cle)%26+'a';
         else if('A' <= c && c <='Z')
          return (c-'A'+cle)%26+'A';
         else
          return c;
        }
    Cela me dit des messages d'erreurs tel que :

    invalid operands to binary expression ('QCharRef' and 'int') à la ligne : k=maCle[i%maCle.length()]%26;

    ou bien :
    no viable overloaded '=' à la ligne : monTexte.at(i)=caesar(monTexte.at(i),k);

    Quelqu'un aurait une solution ?

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Alors, tu essayes de faire des calculs mathématiques avec des caractères. A moins d'être dans un langage barbare, les caractères ne sont pas des nombres Il va falloir te ramener à des types qui peuvent le faire (pas QChar directement donc).

    Pour la 2e erreur, at() renvoie un const, comme toujours ou presque, les accesseurs retournent des const, et il faut se tourner vers l'opérateur [] pour avoir une référence modifiable.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pourtant cela marche bien sans Qt , en pure C++

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    C'est pas une question de Qt ou pas Qt, si tu utilises des classes différentes, faut pas s'attendre à ce qu'elles fonctionnent pareil et il faut étudier leur documentation. Par ailleurs Qt est une bibliothèque C++ donc ne fait que rajouter des classes au C++.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour ,

    J'ai par ailleur transformé monTexte.at(i) par monTexte[i] ..

    Cependant , il aurait suffit de simplement transformer le char en ascii , donc d'utiliser toAscii , qui est désactivé sur Qt5 ..
    Unicode() , latin1() ne marche pas .

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    toAscii() est désactivé mais y'a marqué que c'est pareil que toLatin1().

Discussions similaires

  1. Conversion entre QString et pj_str_t
    Par cyrill.gremaud dans le forum Débuter
    Réponses: 10
    Dernier message: 18/09/2013, 04h50
  2. Réponses: 13
    Dernier message: 01/12/2006, 15h13
  3. [Socket] Conversation entre 2 ordi
    Par madislak dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/11/2006, 10h41
  4. Réponses: 5
    Dernier message: 30/08/2006, 15h10
  5. Fin de conversation entre client et serveur
    Par Stany dans le forum C++
    Réponses: 2
    Dernier message: 15/07/2005, 11h07

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