71 votes

Pourquoi std :: strstream est-il déconseillé?

J'ai récemment découvert que std::strstream avait été déconseillé au profit de std::stringstream . Cela fait un moment que je ne l'utilise pas, mais il a fait ce que je devais faire à ce moment-là. J'étais donc surpris d'entendre parler de sa dépréciation.

Ma question est la suivante: pourquoi cette décision a-t-elle été prise et quels sont les avantages procurés par std::stringstream qui sont absents de std::strstream ?

15voto

AProgrammer Points 31212

Plus facile à comprendre la gestion de la mémoire. (Quelqu'un peut-il se rappeler qui est responsable de la libération de la mémoire allouée et dans quelles conditions?)

(Notez que, puisque strstream fournit toujours quelque chose qui n’est pas disponible ailleurs, il continuera à être présent dans C ++ 0X - au moins la dernière fois que j’ai vérifié le brouillon qu’il était).

11voto

Ken Bloom Points 27197

A strstream construit un char * . A std::stringstream construit un std::string . Je suppose que strstream s sont déconseillés en raison du risque de débordement de la mémoire tampon, ce que std::string empêche automatiquement.

7voto

Component 10 Points 4512

D'un point de vue personnel, à plus d'une occasion, j'ai vu des corruptions de mémoire obscures qu'il a fallu des jours, voire des semaines, pour retrouver, et qui ont finalement abouti à l'utilisation de strstream . Dès qu'elle a été remplacée par stringstream les corruptions ont disparu et je n'ai plus posé de question! C'en était assez pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X