[Dcmlib] [Fwd: Field length and std::string]
Mathieu Malaterre
mathieu.malaterre at kitware.com
Thu Nov 4 20:40:45 CET 2004
En fait je me rends compte que c'est parfaitement valide d'ecrire une
chaine de x caracteres '\0', non ?
C'est completement infernal, le comportement doit etre non definit qd on
copie une chaine de \0 dans une std::string.
Mathieu
Mathieu Malaterre wrote:
> Dans gdcmValEntry.cxx, ligne 226 on fais:
>
> fp->write (GetValue().c_str(), (size_t)lgr ); // Elem value
>
> Le probleme c'est que souvent lgr != GetValue().size()
> En effet DICOM pad toujours ses chaines de caracteres avec un '\0' , qui
> est automatiquement oublie par la std::string
>
> J'aimerais qd meme faire un sanity check, au cas ou.
>
> Commentaires / suggestions ?
>
> Mathieu
> Ps: la solution qui me vient c'est de faire une sous-classe de
> std::string qui gere les \0. Il faudrais faire la difference entre une
> chaine vide et la chaine '\0'...
>
>
> -------- Original Message --------
> Subject: Field length and std::string
> Date: Thu, 04 Nov 2004 14:09:21 -0500
> From: Mathieu Malaterre <mmalaterNOSP at Mnycap.rr.com>
> Newsgroups: comp.protocols.dicom
>
> Hello,
>
> Before I dig into dcmtk code. Does anyone know if there is a way to use
> std::string while still handling string ending with '\0'.
>
> For instance when you read '1.2.840.10008.5.1.4.1.1.6.1'. This is an
> odd length string. So the dicom file adds a '\0'. But in my lib I store
> it as a std::string, so it automatically looses it \0.
>
> Any advice ?
>
> Thanks
> Mathieu
>
>
>
> _______________________________________________
> Dcmlib mailing list
> Dcmlib at creatis.insa-lyon.fr
> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
>
More information about the Dcmlib
mailing list