Bonjour!Est ce que quelqu'un saurait comment obtenir la représentation hexadécimale d un cstring?
-----
Bonjour!Est ce que quelqu'un saurait comment obtenir la représentation hexadécimale d un cstring?
Je précise: en c++
Bonjour,
tu parles des CString de la MFC?
Que veux-tu dire par "représentation hexadécimale d'un cstring"?
Est-ce que tu es dans un environnement "managé" (.Net/CLI) ?
Oui les cstring MFC. Je m explique:j ai une variable dans mon application qui prendra des valeurs qui sont des chaines de caractères,par exemple "michel".Je veux pouvoir obtenir la représentation hexa de "michel",pour ensuite l écrire dans un fichier texte.
Et je suis sous visual c++
Si je comprends bien tu voudrais obtenir, au final, un fichier qui va contenir ça:
Si c'est le cas, je sais le faire en c++ standard, mais avec la MFC, je ne sais pas trop, je vais voir ça de suite.Envoyé par 'michel' en hexa6d696368656c
ps: en c++ standard (portable et tout) ça donnera ceci:
Code:#include <string> #include <fstream> using namespace std; int main(int argc, char** argv) { string str = "michel"; ofstream file("c:/temp/michel.txt"); for (int i=0; i<str.length(); i++) { file << hex << (int) str[i]; } return 0; }
Oui c est bien ca que je veux faire.
J ai fait:
using namespace std;
string str=nom__variable;
ofstream file("texte");
for (int i=0;i<str.lenght();i++)
{
file<<hex<<(int) str[i];
}
mais il me met comme erreur: lenght is not a member of 'basic_string<char,struct std::char__traits<char>,class std::allocator<char>'...
Bon, je ne parviens pas à trouver une solution en utilisant la MFC. Mais cette ... chose (la MFC est plus qu'un bibliothèque, c'est difficie à définir) est loin d'être à la hauteur de la lib standard. Mais je m'égare.
Pour ton code, as-tu bien inclus les en-têtes (#include <string> et #include <fstream>)?
Ces en-têtes appartiennent, justement, à la bibliothèque standard du c++ (c99).
Oui c est la première chose que j ai faite pourtant...
Bon en fait c est juste moi qui avait mis lenght au lieu de length...Mais ca ne me met rien dans mon fichier texte...Est ce que ca peut venir du fait que je l ai rempli avec des fprintf?
ok je vois.
Alors ce que tu vas faire, c'est supprimer le "using namespace std;" et rajouter std:: devant chaque utilisation d'un objet de la STL, ce qui devrait donner ceci:
Au passage, quel est le type de nom_variable? Et est-ce normal que le nom de ton fichier ("texte") n'a pas d'extension?Code:std::string str=nom__variable; std::ofstream file("texte"); for (int i=0;i<str.lenght();i++) { file<<std::hex<<(int) str[i]; }
Oui bien évidemment... le code que je te fournis ici utilise les flux de la STL, c'est du c++, fprintf est une fonction de la lib C, il ne sont pas fait pour être utilisé ensemble.
Non non déslé c'est texte.txt.Et la variable c'est un CString.Je viens de faire les modi que tu viens de m indiquer mais ca ne change rien...
Bah pour l instant j ai tout le temps utilisé les flux avec les fprintf et ca marchait nickel...
Bon et bien je ne sais pas.
Si tu pouvais me donner un peu plus de détails (code + messages d'erreur), je pourrais te conseiller plus efficacement.
Ça rajoute du code et donc limite la lisibilité; je ne vois pas d'intérêt ici à faire cela.
Sinon pour le problème de bob:
Est-ce que tu es sur que « nom__variable » est une variable non vide ?Code:using namespace std; string str=nom__variable; ofstream file("texte"); for (int i=0;i<str.length();i++) { file<<hex<<(int) str[i]; }
Procède à un affichage pour t'en assurer.
Autre chose: le nom d'une variable doit être explicite (« nom__variable » ne l'est pas) et il vaut mieux éviter de mélanger anglais et français, sauf pour s'attirer du trouble. Donc si tu choisis « nom__variable », alors écris « fichier » plutôt que « file ».
Est ce que
fonctionne ? (avec les bonnes entêtes bien sûr)Code:using namespace std; cstring str="blabla"; ofstream file("texte.txt"); for (int i=0;i<str.length();i++) { file<<hex<<(int) str[i]; }
Non ca ne marche pas non plus...Mais ce que je me demande c 'set si j ai utilisé des fprintf avant,et que je l ai crée avec un fopen, est ce que je peux continuer de le remplir avec ofstream?...
C'est bon problème réglé:j ai viré tous mes fprintf pour les remplacer par des flux,et maintenant ca marche.Merci de votre aide