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

MFC Discussion :

[.NET VC++] ou exclusif entre deux String


Sujet :

MFC

  1. #1
    Membre confirm� Avatar de benoitB
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    78
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 78
    Par d�faut [.NET VC++] ou exclusif entre deux String
    Bonjour, je cherche � crypter un String (ou exclusif avec une autre String).

    A une fonction je passe la String � crypter, cette fonction ferait les op�rations suivantes :
    1- elle scrute les caract�res un par un (du d�but � la fin)
    2- manipule CE caract�re (ou exclusif avec un autre caract�re)
    3- le remplace par le r�sultat ci-dessus
    4- renvoi la cha�ne � la fin de la scrutation

    Par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private: String* CrypteDecrypte(String* pstring_)
    {
       String* pstring_Retour = pstring_;
       for( int i=0 ; i<pstring_Retour->Length ; i++ )
          pstring_Retour[i] = pstring_Retour[i] (ou exclusif) '#'
     
       return pstring_Retour;
    }
    Je me heurte � �a :
    1- je ne pense par pouvoir manipuler cacart�re par caract�re dans la String,
    2- transformer la String initiale en tableau de caract�re
    2-1- effectuer la succession de ou exclusifs
    2-2- re-transformer le tableau de caract�res obtenu en String
    2-3- renvoyer cette String

    Existe-t-il plus pratique ?

    Merci

  2. #2
    Membre �clair�

    Inscrit en
    D�cembre 2002
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2002
    Messages : 60
    Par d�faut
    Heu, ... si, tu peux manipuler un String comme un tableau de caracteres.

    D'ailleurs, plutot que ta manipulation "tordue" pour renvoyer une String*, pourquoi ne pas directement manipuler la variable passee en parametre.

    Et puis tant qu'a faire, autant la passer par reference, ce qui te permets efectivement de l'utiliser directement comme un tableau de caracteres.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    void CrypteDecrypte(String& pstring_) 
    { 
       for( int i=0 ; i<pstring_.Length ; i++ ) 
          pstring_[i] = pstring_[i] ^ '#' ;
    }

  3. #3
    Membre confirm� Avatar de benoitB
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    78
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 78
    Par d�faut le compilo n'aime pas mes [] alors
    Bon, j'ai cod� la fonction comme suit :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    private: void CrypteDecrypte(String& pstring_)
    			{
    				for( int i=0 ; i<pstring_.Length ; i++ )
    					pstring_[i] = pstring_[i] ^ '#';
    			}
    Et l'erreur de compilation est :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    error C2676: '[' : 'System::String' binaire ne définit pas cet opérateur ou une conversion vers un type acceptable pour l'opérateur prédéfini
    error C2676: '[' : 'System::String' binaire ne définit pas cet opérateur ou une conversion vers un type acceptable pour l'opérateur prédéfini
    J'en d�duis qu'il n'appr�cie pas les [] ?

  4. #4
    Membre �clair�

    Inscrit en
    D�cembre 2002
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2002
    Messages : 60
    Par d�faut
    Honnetement, je ne connais pas .NET et la classe String...

    Mais n'aurait-elle pas, par hasard, des accesseurs genre GetAt et SetAt? Dans ce cas tu peux les utiliser.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    pstring_.SetAt(i, pstring_.GetAt(i) ^ '#');
    Ou quoi que ce soit qui permette ce manipuler directement un caractere d'une chaine de la classe String.

    Il doit y avoir quelque chose... Sinon utilise un autre classe que String

  5. #5
    Membre confirm� Avatar de benoitB
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    78
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 78
    Par d�faut merci
    merci, je trouve pas mais ... je cherche encore

  6. #6
    Membre confirm� Avatar de benoitB
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    78
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 78
    Par d�faut peut-�tre la r�ponse...
    En me plongeant dans mes bouquins je trouve :

    "il n'est pas possible de modifier un objet String apr�s son initialisation"

    ?

  7. #7
    Membre �clair�

    Inscrit en
    D�cembre 2002
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2002
    Messages : 60
    Par d�faut
    Alors utilises un autre type: string, CString, char*, ...

  8. #8
    Membre confirm� Avatar de benoitB
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    78
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 78
    Par d�faut �a y est : StringBuilder de System::Text
    �a y est, dans le livre VisualC++.NET �tape par �tape Microsotf Press page 42 :
    - une String n'est pas modifiable APRES son initialisation
    - utiliser une StringBuilder de System::Text pour des cha�nes devant �tre souvent modifi�es

    Alors voila ce que j'ai fait ET qui fonctionne � merveille c'est � dire comme je le veux :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	private: String* CrypteDecrypte(String* pstring_)
    			{
    				StringBuilder* pstringbuilder_Retour = new StringBuilder(pstring_);
    				StringBuilder* pstring_Key           = new StringBuilder(S"ma clef de cryptage");
     
    				for( int i=0 ; i<pstringbuilder_Retour->Length ; i++ )
    					pstringbuilder_Retour->set_Chars(i, pstringbuilder_Retour->get_Chars(i) ^ pstring_Key->get_Chars(i%(pstring_Key->Length)));
     
    				return pstringbuilder_Retour->ToString();
    			}
    avec bien �videmment :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    using namespace System::Text;

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

Discussions similaires

  1. Echange de valeurs entre deux Strings
    Par Daborem dans le forum D�buter
    R�ponses: 6
    Dernier message: 31/05/2015, 09h02
  2. linq Between entre deux strings
    Par smith25 dans le forum VB.NET
    R�ponses: 7
    Dernier message: 24/04/2015, 17h14
  3. Rechercher partie commune entre deux string
    Par laurent.brechon dans le forum Langage
    R�ponses: 2
    Dernier message: 19/07/2010, 16h27
  4. R�ponses: 6
    Dernier message: 06/02/2007, 11h48
  5. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 05/07/2005, 08h00

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