bonjour,
j'utilise les classes commoncpp que je trouve vraiment bien.
dans ces classes, il y en a une qui sert a calculer une somme MD5.
je veux l'utiliser, elle fonctionne bien mais le probleme c'est que je ne peut qu'afficher le resultat.
le prototype est le suivant :
operator<<(std::ostream &os, Digest &ia)
ce qui veut dire que si je fais :
cout << digest;
ça va afficher le resultat (le md5).
mais j'aimerais recuperer la valeur dans une string ou qquel chose d'equivalent.
ya t'il moyen d'intercepter ce qui passe dans cout ?
les classes ne permettent pas d'autre solution pour recuperer la valeur je croit.
merci
ps : http://www.gnu.org/software/commoncpp/(...)
# Re: probleme en c++
Posté par cho7 . Évalué à -1.
Car pitetr qu'en forcant par un sprintf(md5,"%s",digest) ca marcherai ?
- cho7, qui essaie d'aider, mais qui n'a guere de solution... -
# Re: probleme en c++
Posté par Nap . Évalué à 1.
j'veux dire: std::ostream, y a pas moyen de s'en servir pour utiliser une chaine de caractère ?
# Re: probleme en c++
Posté par jm trivial (site web personnel) . Évalué à 3.
Ça marche super bien, on peut utiliser
String s= new String ("1 2 5");
str << s;
puis ensuite lire des valeurs dedans, genre avec
int entier;
str >> entier;
Je ne sais pas si c'est ce que tu cherches, mais ça marche assez bien...
[^] # Re: probleme en c++
Posté par Florent Bayle (site web personnel) . Évalué à 2.
[^] # Re: probleme en c++
Posté par jm trivial (site web personnel) . Évalué à 1.
Tout dépend de la version de g++ que tu utilises...
En fait les lignes de mon post ci-dessus sont inspirées d'un projet dont voici les
premières lignes du fichier utilisant strstream:
/* on utilise ici strstream au lieu de stringstream
* malgré le fait que ce soit depreciated
* pour des raisons de compatibilité avec le compilateur g++ version 2.95 disponible au CIE */
#include
Si on a un compilateur un tant soit peu moderne, on doit certainement utiliser
#include <stringstream>
[^] # Re: probleme en c++
Posté par spongurex . Évalué à 1.
[^] # Re: probleme en c++
Posté par Obsidian . Évalué à 1.
Moralité: Le C++ sous Unix, c'est génial, mais n'hésitez pas à aller chercher la dernière version du compilo !
[^] # Re: probleme en c++
Posté par spongurex . Évalué à 1.
je suis oblige plussoyer tellement vous m'avez rendu service.
voila comment j'ai fais, au cas ou d'autre serait dans le même cas que moi un jour :
#include < sstream >
string generer_md5(string fichier)
{
stringstream md5;
//
// [...] ici : traitement sur un fichier pour generer le md5
//
md5 << digest;
return md5.str();
}
merci
[^] # Re: probleme en c++
Posté par koxinga . Évalué à 1.
tu peux faire des ostringstream et des istringstream, mais je n'ai pas trop compris l'utilité par rapport à un stringstream ? quelqu'un m'explique ?
[^] # Re: probleme en c++
Posté par Obsidian . Évalué à 1.
http://www.cplusplus.com/ref/iostream/index.html(...)
Basiquement, stringstream = istringstream + ostringstream
En C++, ostringstream est à ostream ce que, en C, sprintf est à fprintf. Symétriquement, istringstream et istream correspondent respectivement à sscanf et fscanf.
En C, on utilise jamais l'un avec l'autre. En C++, au contraire c'est très utilisé pour formatter des valeurs ou les convertir. Toujours est-il que tout les streams travaillent sur un buffer accessible par rdbuf ou str. C'est surtout ce buffer qu'il faudrait exploiter plus souvent.
Sinon, pour les cours C++: En ce qui me concerne, il y a belle lurette que je n'ai plus qu'une seule référence:
http://casteyde.christian.free.fr(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.