Est ce que quelqu'un saurait comment modifier une facet pour que
std::endl envoie r au lieu de n ?
Baisquement, j'ai un code existant qui communiquait par une
stream sur port série avec endl (alias n) en tant que fin de
ligne mais maintenant, je dois utiliser r à la place.
Est ce que quelqu'un saurait comment modifier une facet pour que
std::endl envoie r au lieu de n ?
Baisquement, j'ai un code existant qui communiquait par une
stream sur port série avec endl (alias n) en tant que fin de
ligne mais maintenant, je dois utiliser r à la place.
Est ce que quelqu'un saurait comment modifier une facet pour que
std::endl envoie r au lieu de n ?
Baisquement, j'ai un code existant qui communiquait par une
stream sur port série avec endl (alias n) en tant que fin de
ligne mais maintenant, je dois utiliser r à la place.
On Oct 25, 6:50 pm, Michael DOUBEZ wrote:Est ce que quelqu'un saurait comment modifier une facet pour que
std::endl envoie r au lieu de n ?
Je ne crois pas que ce soit le bon chemin. La fonction
std::endl elle-même ne prend pas en compte le locale, et
insérerait toujours 'n'. On pourrait s'arranger pour remapper
le 'n' en 'r' (ou plutôt en 0x0D) dans un codecvt, qui
servira alors dans le filebuf, mais selon le cas, ça pourrait
être considéré comme un abus -- surtout, il ne marcherait
qu'avec des std::filebuf (ifstream et ofstream), et non avec des
autres streambuf. (Remarque, selon le cas, ça pourrait être un
avantage, et non un défaut.)Baisquement, j'ai un code existant qui communiquait par une
stream sur port série avec endl (alias n) en tant que fin de
ligne mais maintenant, je dois utiliser r à la place.
Je me démande : pour la communication à un port série, est-ce
que tu te sers d'un streambuf sur mesure, ou est-ce que tu
passes par un filebuf et le système ?
Dans le premier cas,
c'est évident que la transformation doit avoir lieu dans le
streambuf. Dans le deuxième, l'utilisation d'un codecvt pourrait
exceptionnellement se justifier : c'est bien l'encodage de ton
« fichier » qui est en question.
On Oct 25, 6:50 pm, Michael DOUBEZ <michael.dou...@free.fr> wrote:
Est ce que quelqu'un saurait comment modifier une facet pour que
std::endl envoie r au lieu de n ?
Je ne crois pas que ce soit le bon chemin. La fonction
std::endl elle-même ne prend pas en compte le locale, et
insérerait toujours 'n'. On pourrait s'arranger pour remapper
le 'n' en 'r' (ou plutôt en 0x0D) dans un codecvt, qui
servira alors dans le filebuf, mais selon le cas, ça pourrait
être considéré comme un abus -- surtout, il ne marcherait
qu'avec des std::filebuf (ifstream et ofstream), et non avec des
autres streambuf. (Remarque, selon le cas, ça pourrait être un
avantage, et non un défaut.)
Baisquement, j'ai un code existant qui communiquait par une
stream sur port série avec endl (alias n) en tant que fin de
ligne mais maintenant, je dois utiliser r à la place.
Je me démande : pour la communication à un port série, est-ce
que tu te sers d'un streambuf sur mesure, ou est-ce que tu
passes par un filebuf et le système ?
Dans le premier cas,
c'est évident que la transformation doit avoir lieu dans le
streambuf. Dans le deuxième, l'utilisation d'un codecvt pourrait
exceptionnellement se justifier : c'est bien l'encodage de ton
« fichier » qui est en question.
On Oct 25, 6:50 pm, Michael DOUBEZ wrote:Est ce que quelqu'un saurait comment modifier une facet pour que
std::endl envoie r au lieu de n ?
Je ne crois pas que ce soit le bon chemin. La fonction
std::endl elle-même ne prend pas en compte le locale, et
insérerait toujours 'n'. On pourrait s'arranger pour remapper
le 'n' en 'r' (ou plutôt en 0x0D) dans un codecvt, qui
servira alors dans le filebuf, mais selon le cas, ça pourrait
être considéré comme un abus -- surtout, il ne marcherait
qu'avec des std::filebuf (ifstream et ofstream), et non avec des
autres streambuf. (Remarque, selon le cas, ça pourrait être un
avantage, et non un défaut.)Baisquement, j'ai un code existant qui communiquait par une
stream sur port série avec endl (alias n) en tant que fin de
ligne mais maintenant, je dois utiliser r à la place.
Je me démande : pour la communication à un port série, est-ce
que tu te sers d'un streambuf sur mesure, ou est-ce que tu
passes par un filebuf et le système ?
Dans le premier cas,
c'est évident que la transformation doit avoir lieu dans le
streambuf. Dans le deuxième, l'utilisation d'un codecvt pourrait
exceptionnellement se justifier : c'est bien l'encodage de ton
« fichier » qui est en question.
Oui, je pourrait effectivement filter dans le sreambuf.
J'aurais préféré une modification moins intrusive: ça me
parraissait plus adapté de ne pas propager la contrainte du
format de communication jusque là (i.e. en étendant la
fonctionalité de serialbuf).
Comme endl est rn sous windows par exemple, je me dit que ça doit ê tre
trivial avec un codecvt custom.
Oui, je pourrait effectivement filter dans le sreambuf.
J'aurais préféré une modification moins intrusive: ça me
parraissait plus adapté de ne pas propager la contrainte du
format de communication jusque là (i.e. en étendant la
fonctionalité de serialbuf).
Comme endl est rn sous windows par exemple, je me dit que ça doit ê tre
trivial avec un codecvt custom.
Oui, je pourrait effectivement filter dans le sreambuf.
J'aurais préféré une modification moins intrusive: ça me
parraissait plus adapté de ne pas propager la contrainte du
format de communication jusque là (i.e. en étendant la
fonctionalité de serialbuf).
Comme endl est rn sous windows par exemple, je me dit que ça doit ê tre
trivial avec un codecvt custom.