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 :

codage base64 du caractere nul


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 5
    Points
    5
    Par défaut codage base64 du caractere nul
    Bonjour a tous.

    Je travaille sur une application c++ qui devrait envoyer des mails avec SMTP. pour passer la requête AUTH PLAIN, je dois décoder "\0user@domain.com\0password" en base64, afin que je puisse passer la requête complète. Mon problème est ma chaîne de caractère doit commencer par un \0 (le caractère nul), et quand je passe "\0user@domain.com\0password" (sans guillemets) je reçois rien. Quelqu'un a eu ce problème avant

    Remarques:
    J'utilise ce code pour faire le codage vers base64: http://www.adp-gmbh.ch/cpp/common/base64.html
    Je travaille avec Visual Studio 2010 sur Windows 8.

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 438
    Points
    2 438
    Par défaut
    Bonjour.

    Il faut savoir que '\0' est le marqueur qui indique la fin de chaîne dans un char*.

    Ça veut dire qu'il y a des chances que lors de la construction de ta variable de type std::string, cette dernière contiendra tout ce qu'il y avait avant le '\0', c'est-à-dire rien puisque c'est le premier caractère.

    Le code suivant montre bien le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    #include <string>
     
    int main() {
    	std::string str1 = "\0A\0A";
    	std::cout << str1 << '\n' << std::string("\0A\0A", 5) << std::endl;
    	//affiche \nAA
    	return 0;
    }
    Pour contourner le problème, tu peux soit passer par le constructeur std::string::string(const char* s, size_t count), soit utiliser la version 14 de C++ et utiliser l'opérateur std::string operator ""s (const char*, std::size_t). Cette dernière solution n'est pas encore supportée par tous les compilateurs.

    Liens:
    Constructeurs std::string
    operator ""s
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour.

    Merci beaucoup pour vos informations, elles sont trop intéressantes. J'essayerai tout de suite.

    Cordialement

Discussions similaires

  1. Réponses: 12
    Dernier message: 10/11/2008, 10h14
  2. retirer des caracteres nuls d'une chaine
    Par nikolanta dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2008, 15h35
  3. codage caractere
    Par cedre22 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2006, 09h32
  4. [Sécurité] Codage des caractéres arabe
    Par riadh100 dans le forum Langage
    Réponses: 3
    Dernier message: 13/09/2005, 13h40
  5. [Encodage] codage des caractères spéciaux
    Par soulhouf dans le forum Général Java
    Réponses: 11
    Dernier message: 24/08/2005, 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