[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