Salut
est-it possible de rediriger cerr<< pour l,afficher dans un AfxMessageBox()
merci
Salut
est-it possible de rediriger cerr<< pour l,afficher dans un AfxMessageBox()
merci
C'est plutôt un problème de C++ à vrai dire. Je déplace y'a plus de chances dans le forum C++.
Une solution que j'avais explorée pour cout c'est de remplacer le filebuf par le tient via un std::cerr.rdbuf( &mon_filebuf ); Un truc du genre:
Je laisse Luc commenter son approche à base de locale
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 template<class Elem, class Traits> class afx_filebuf : public std::basic_filebuf<Elem, Traits> { protected: virtual std::streamsize xsputn(const Elem *Ptr, std::streamsize Count) { // recopier <Count> chars dans une chaine et l'afficher } }; // object static (devrait etre singleton) utilisé pour modifier cerr struct InitAfxCerr { // code de modif dans le constructeur InitAfxCerr() { std::cerr.rdbuf( &this->afxbuf ); } afx_filebuf<char, std::char_traits<char> > afxbuf; }; static InitAfxCerr init_afxcerr;
http://hermitte.free.fr/Info/C++/locale.tar.gz
Oulah! C'est vieux ce que j'avais fait. Le but était de changer des facets pour traiter les problèmes liés à la locale. Typiquement les problèmes d'accents. Le résultat était moyennement convaincant dans la mesure où les cin/cout/... de VC6 ne pouvaient pas être imbués et que je n'avais pas trouvé comment correctement lire avec accents avec cette approche.
Bref. Cela n'avait pas grand raport avec le problème de Philippe.
L'approche qui consiste à définir son propre streambuffer est celle qui me parait la plus idiomatique -- c'est comme cela que l'on procède pour communiquer via sockets avec les flux du C++.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
J'avais utilisé ça pour modifier les accents sur cout. ca marche si on affiche des string / char *, mais pas si on affiche un caractère unique...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager